关键字:线程间操作无效: 从不是创建控件的线程访问它 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);