如何在线程上创建webBrowser控件
如何在线程上创建webBrowser控件
不要在非UI线程上创建webbrowser。 因为webbrowser不是线程安全的。
我开始尝试在线程中添加其他控件可以,但添加webbrowser却不行,提示错误:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。请问这是什么意思
白了,webbrowser控件不是原生的,它是对一个com组件(shdocvw.dll)的包装。
默认情况下,你的UI线程有[STAThread]标记,所以可以运行webbrowser
其实你是不是可以在非可视化的情况先创建WebBrowser控件,然后在一定的时间后显示出来。你的问题如果是在线程中创建,网络慢的等待是永远存在的 论文网
你不要在线程中创建啊,你先在窗口线程创建好后,在Visible为false的情况下加载啊
这种应该也是会卡住主程序的
Thread thread = new Thread(this.CreateWebBrowser);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
void CreateWebBrowser()
{
webBrowser2 = new System.Windows.Forms.WebBrowser();
}