我有一个方法,它在与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
语句但后来我不知道会发生什么,其他代码永远不会被调用。
任何帮助将不胜感激。
答案 0 :(得分:1)
可能是你的主线程被阻塞了,可能是因为它正在等待你的代码完成(即你的代码已经死锁,因为两个线程正在等待彼此)。
尝试找出主要UI线程被阻止的原因,或者使用BeginInvoke
代替Invoke
。