一个多线程的问题,大家来帮帮忙吧!
在Form1中定义了一个全局对象WebBrowser,窗体在启动的时候将它实力化了:
C# code
public WebBrowser _myWB;
private void Form1_Load(object sender, EventArgs e)
{
_myWB = new WebBrowser();
}
然后在按了一个按扭之后启动一个线程,这个线程调用A类的一个静态方法,这个静态方法要操作Form1中的WebBrowser,这个静态方法通过委托(delete_webbrowser)封装一个方法(_get_page)来操作那个WebBrowser:
C# code
public static string Get_Page(string xURL)
{
_webbrowser delete_webbrowser = new _webbrowser(_get_page);
string[] para = new string[] { xURL };
string content = (string)Program._form1._myWB.Invoke(delete_webbrowser, para); //这里出错
return content;
}
请看上面出错部分,出错的提示是:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
这里应该不会出现这种错误啊,因为Program._form1是已经实例化了的,窗口已经有了,为什么还会出现这种错误??
------解决方案--------------------看看,顶下
------解决方案--------------------_myWB没有在界面上显示?
修改成:
string content = (string)Program._form1.Invoke(delete_webbrowser, para);
试一下