我在自己启动的线程创建了webbrowser控件,结果抛ThreadStateException 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2“。
    是怎么回事?我如何能在这个线程中创建webbrowser?不是显示它,只是创建这个对象然后使用它。在主线程创建的和使用的时候我试过可以。
    在线等

解决方案 »

  1.   

    webbrowser控件 不能在线程中用
      

  2.   

    webbrowser控件内部会创建多个线程,没必要在工作线程中创建它,
      

  3.   


    主界面放N个webbrowser控件
      

  4.   

    http://www.cnblogs.com/xjfhnsd/archive/2010/03/14/1685441.html
      

  5.   


    因为WebBrowser使用了COM接口,所以对线程是有要求的这样开线程就可以了
                Thread t = new Thread(CreateWebBrowser);
                t.SetApartmentState(ApartmentState.STA);
                t.Start();
        public partial class Form1 : Form
        {
            public Form1() {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e) {
                Thread t = new Thread(CreateWebBrowser);
                t.SetApartmentState(ApartmentState.STA);
                t.Start();
            }
            delegate void MyDelegate();
            static WebBrowser _webBrowser = null;
            static void CreateWebBrowser() {
                _webBrowser = new WebBrowser();
                _webBrowser.Location = new System.Drawing.Point(0, 100);
                _webBrowser.MinimumSize = new System.Drawing.Size(20, 20);
                _webBrowser.Name = "_webBrowser";
                _webBrowser.Size = new System.Drawing.Size(400, 500);
                _webBrowser.TabIndex = 2;
                Form1.ActiveForm.Invoke((MyDelegate)delegate() {
                    Form1.ActiveForm.Controls.Add(_webBrowser);
                });
                _webBrowser.Navigate("http://www.google.com.hk");
            }
        }