运行后VS2005提示下面的错误:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。   //这是一个WebBrowser控件 网页浏览器的控件.情况:这个WebBrowser控件在一个子窗口下, 是通过子线程来调用这个窗口,来实现网页的浏览的.. 这样减少主线程的事情..如图:程序能正常被调试.. 但是一按相关按钮,就出现这样的异常… 

解决方案 »

  1.   

    UI控件要在主线程中创建,不要试图在子线程中创建和初始化winform控件这里说的单线程单元其实就是winform线程了,记不记得这个属性:[STAThread]
      

  2.   

     System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(test));
                s.ApartmentState = System.Threading.ApartmentState.STA;
                s.Start();原因参考
    http://blog.csdn.net/jinjazz/archive/2007/11/29/1907240.aspx
      

  3.   

    哦.  确实,我是用子线程给web控件赋Url 地址的.. 如果这样不行..那有什么办法么? Url地址是动态,根据文本文件读取的..
      

  4.   

    子线程可以的,只要设置ApartmentState 就行了
      

  5.   

    在子线程中操作控件可以参考这个帖子:
    http://topic.csdn.net/u/20080515/12/48f63edf-164b-49f1-afbf-0d8b32b194e4.html
      

  6.   

    SwitchCraft 老大.... 还是没怎么懂.. 子线程是调用"打开窗口"的消息的..
    就是将一个子窗口MDI到主窗口..
    然后这个子线程还要设置子窗口里面的控件..
      

  7.   

    invoke 控件属性 给url 赋值