C# 如何在C中的后台工作程序中使用web浏览器对象#

C# 如何在C中的后台工作程序中使用web浏览器对象#,c#,browser,backgroundworker,C#,Browser,Backgroundworker,我对下面的代码有问题。有人能告诉我为什么它在BackgroundWorker中不起作用,我如何解决这个问题吗 string address = "My URL"; webBrowser.Navigate(new Uri(address)); do { Application.DoEvents(); } while (webBrowser.ReadyState !=

我对下面的代码有问题。有人能告诉我为什么它在BackgroundWorker中不起作用,我如何解决这个问题吗

  string address = "My URL";
            webBrowser.Navigate(new Uri(address));
            do
            {
                Application.DoEvents();
            } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);

你最好打开一个新的线程,并从那里指导WebBrowser

Application.DoEvents()
有点像

以下是您可以开始的方式

System.Threading.Thread t = new System.Threading.Thread(() =>
{
    yourWebBrowser.Navigate("http://Google.com");
});

t.ApartmentState = System.Threading.ApartmentState.STA;
t.Start();
要获得页面已加载的通知,您可以订阅DocumentCompleted事件,如下所示:

yourWebBrowser.DocumentCompleted += WebBrowserDocumentCompleted;

void WebBrowserDocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
    throw new NotImplementedException();
}

否,因为backgroundWorker的ApartmentState为
MTA
,而不是webbrowser的
STA
needs@arash这行得通吗?如果它解决了你的问题,请考虑接受这个答案