使用多线程,在Form中实例化WebBrowser时,就会报异常

private void InitializeComponent()
{
  this.webBrowser1 = new System.Windows.Forms.WebBrowser();  //异常
}

 

我用下面方法解决:

1、在方法块外包一个线程

2、线程加入STA

Thread t = new Thread((ThreadStart)(() =>
{
    FormBrowser form = new FormBrowser();
    //Show()是非阻塞的,函数执行完整个线程就结束了,因此窗体就消失了。 (现象是看起来没有显示form)
    //ShowDialog()方法阻塞式显示窗体,就不会消失了,因为新的窗体是在主线程上创建的
    //form.Show();   
    form.ShowDialog();
}));

// 把代码线程,加入到 STA 线程
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();

 

相关文章:

  • 2022-12-23
  • 2021-06-18
  • 2022-01-15
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
猜你喜欢
  • 2021-07-16
  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案