在C#中线程化WebBrowser

时间:2012-09-22 17:32:41

标签: c# multithreading com browser

我在课程中有2个方法(login()change())。

在该课程中,我还有一个属性(webBrownser wb

我通过线程

调用login()
Thread tLogin = new Thread(b.doLogin);
tLogin.SetApartmentState(ApartmentState.STA);
tLogin.Start();

和方法change()也是由线程

 Thread tLike = new Thread(b.autoLike);
 tLike.SetApartmentState(ApartmentState.STA);
 tLike.Start();

但是当方法change()尝试使用属性wb时,我会收到以下消息:

  

已与基础RCW分离的COM对象不能   使用。

我做错了什么?

这些方法与lock() ...

同步

1 个答案:

答案 0 :(得分:0)

WebBrowser是一个COM(或ActiveX)组件。它不能用于任何其他线程而不是使用object创建的线程。并且该线程需要一个消息泵(例如WinForms中的Application.Run)。

有关如何执行此操作的详细信息,请参阅WebBrowser Control in a new thread