一个多线程的问题,大家来帮帮忙吧!
在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);
试一下