如何在C#后台工作者中使用Web浏览器对象

时间:2012-11-27 07:34:28

标签: c# browser backgroundworker

我的代码存在问题。有人可以说明为什么它在BackgroundWorker中不起作用,我该如何解决这个问题

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

1 个答案:

答案 0 :(得分:1)

没有!!

您最好打开一个新线程并从那里指示WebBrowser

Application.DoEvents()有点evil

以下是如何开始

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();
}