日期:2014-05-18  浏览次数:20659 次

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