在窗体上调用Invoke()时代码出现问题?

时间:2011-09-14 09:41:54

标签: c# multithreading

我有一个方法,它在与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语句但后来我不知道会发生什么,其他代码永远不会被调用。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

可能是你的主线程被阻塞了,可能是因为它正在等待你的代码完成(即你的代码已经死锁,因为两个线程正在等待彼此)。

尝试找出主要UI线程被阻止的原因,或者使用BeginInvoke代替Invoke