webBrowser.Navigate同步

Dis*_*ted 4 .net c# browser

我想同步调用webBrowser.Navigate(string urlString)webBrowser是Windows窗体控件.我是这样做的

...
private delegate void NavigateDelegate(string s);
...
private void Function()
{
    NavigateDelegate navigateDelegate = 
        new NavigateDelegate(this.webBrowser1.Navigate);
    IAsyncResult asyncResult = 
        navigateDelegate.BeginInvoke("http://google.com", null, null);

    while (!asyncResult.IsCompleted)
    {
        Thread.Sleep(10);
    }

    MessageBox.Show("Operation has completed !");
}
Run Code Online (Sandbox Code Playgroud)

但信息永远不会被推.为什么这段代码不能正常工作?

Vik*_*iaR 5

不是最好的方法,但你可以使用这个......

while (this.webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
     Application.DoEvents();
     Thread.Sleep(100);
}
Run Code Online (Sandbox Code Playgroud)


Teo*_*gul 4

而是使用它来同步检索页面:

this.webBrowser.DocumentCompleted += WebBrowserDocumentCompleted;
this.webBrowser.Navigate("http://google.com");

private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
  MessageBox.Show("Operation has completed !");
}
Run Code Online (Sandbox Code Playgroud)