InvokeRequired难题
如果想在工作线程(不是UI线程)中创造一个窗体,避免线程安全,一般会
C# code
if(this.form2.InvokeRequired)
{
MethodInvoker mi = new MethodInvoker(form2Invoke);
this.webBrowser.BeginInvoke(mi);
}
else
{
form2Invoke();
}
void form2Invoke()
{
this.form2=new Form();
form2.ShowDialog();
}
但是如果是这个this.form2是待创建呢?现在还是NULL怎么办?
一般可以this.InvokeRequired代替this.form2.InvokeRequired,然后再创建这个form2;
可是如果this不是主界面程序,而是一个类库,那又如何处理?
------解决方案--------------------
如果是用户控件,那么判断写到自己控件代码内部。
如果不是,最好不要在UI层以外调用涉及到UI的东西。