跨线程调用UI控件问题

关键字:线程间操作无效: 从不是创建控件的线程访问它 InvalidOperationException

发现这样的关键字,很有可能是跨线程调用UI控件问题,.NET下,在工作线程中要调用UI线程,需要通过委托,如果直接通过对象引用调方法,就会报上面的错误。

首先,声明定义委托方法:
public delegate void CloseFormHandler();
public event CloseFormHandler closeForm;

然后在初始化或适当的地方注册事件,并定义:
closeForm += new CloseFormHandler(Test_closeForm);

void Test_closeForm()
{
CloseForm();
}

最后在需要跨线程调用的地方,通过UI对象引用调用Invoke:
Control.Invoke(closeForm);

发表评论

邮箱地址不会被公开。