0

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

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

1 回答 1

1

不!!

您最好打开一个新线程并从那里指示 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();
}
于 2012-11-27T07:36:03.713 回答