webBrowser.Navigate синхронно - PullRequest
4 голосов
/ 28 мая 2011

я хочу вызвать webBrowser.Navigate (строка urlString) синхронно, где webBrowser - это управление окнами.Я делаю это таким образом

...
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 !");
}

, но сообщение никогда не отправляется.ПОЧЕМУ этот код не работает должным образом?

Ответы [ 2 ]

5 голосов
/ 28 мая 2011

Не лучшим образом, но вы можете использовать это ...

while (this.webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
     Application.DoEvents();
     Thread.Sleep(100);
}
4 голосов
/ 28 мая 2011

Скорее используйте это для получения страницы синхронно :

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

private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
  MessageBox.Show("Operation has completed !");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...