在表单上调用Invoke()时的代码问题

本文关键字:代码 问题 表单 调用 Invoke | 更新日期: 2023-09-27 18:08:46

我有一个方法是在不同的线程上调用的,而不是在UI线程上。

当这个方法被调用时,控件消失了,我的意思是什么都没有发生。

代码如下:

    private void MainForm_NewMeasurementState(Measurement measurement)
            {
                try
                {
                    if (InvokeRequired)
                    {
                        // we were called on a worker thread
                        // marshall the call to the user interface thread
                        this.Invoke(new Action<Measurement>(MainForm_NewMeasurementState), new object[] { measurement });
                        return;
                    }
// some other code
    }

控件出现在if语句中,但我不知道发生了什么,其他代码从未被调用。

在表单上调用Invoke()时的代码问题

这可能是你的主线程被阻塞,也许是因为它正在等待你的代码完成(即你的代码死锁,因为两个线程正在等待对方)。

尝试找出主UI线程被阻塞的原因,否则使用BeginInvoke而不是Invoke