在表单上调用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
语句中,但我不知道发生了什么,其他代码从未被调用。
这可能是你的主线程被阻塞,也许是因为它正在等待你的代码完成(即你的代码死锁,因为两个线程正在等待对方)。
尝试找出主UI线程被阻塞的原因,否则使用BeginInvoke
而不是Invoke
。