不要在非UI线程上创建webbrowser。

解决方案 »

  1.   

    为什么不能在UI线程上创建webbrowser?谢谢……
      

  2.   

    因为webbrowser不是线程安全的。
      

  3.   

    不太理解,因为webbrowser控件加载网页有时会很卡,所以我想能不能将它放到一个单独的线程中处理,请问能实现么?
      

  4.   

    哦,我开始尝试在线程中添加其他控件可以,但添加webbrowser却不行,提示错误:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。请问这是什么意思?谢谢……
      

  5.   


    说白了,webbrowser控件不是原生的,它是对一个com组件(shdocvw.dll)的包装。默认情况下,你的UI线程有[STAThread]标记,所以可以运行webbrowser
      

  6.   

    其实你是不是可以在非可视化的情况先创建WebBrowser控件,然后在一定的时间后显示出来。你的问题如果是在线程中创建,网络慢的等待是永远存在的
      

  7.   

    微软自从2010年以后,技术上越来越低级了。除了windows8,其他很多有创意的东西都被无形中武断伤害了(例如DLR等等好东西都成了半途而废的鸡肋)。微软公司沦为二流销售公司了。有时候真的感觉无法指望他们。
      

  8.   


    你不要在线程中创建啊,你先在窗口线程创建好后,在Visible为false的情况下加载啊
      

  9.   

    15楼 你不要在线程中创建啊,你先在窗口线程创建好后,在Visible为false的情况下加载啊这种应该也是会卡住主程序的
      

  10.   

    你说的加载网页慢是加载的互联网网页呢,还是程序动态拼成的HTML页面加载显示呢?
      

  11.   

    网上的,如果这个不能解决,那么能否在对webBrowser内的网页元素进行操作时不卡呢?例如我遍历其所有HtmlElement元素处理……
      

  12.   

    你用webbrowser控件加载一下新浪官网就知道了…
      

  13.   

    Thread thread = new Thread(this.CreateWebBrowser);
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();void CreateWebBrowser()
    {
        webBrowser2 = new System.Windows.Forms.WebBrowser();
    }