Каков наилучший способ приостановить цикл, пока веб-браузер загружает страницу? - PullRequest
0 голосов
/ 24 ноября 2011

Мне нужен цикл паузы, пока веб-браузер не завершит загрузку страницы.

 string[] lines = (string[]) Invoke((ReadLine)delegate
                {
                    return logins.Lines;
                });


 foreach (string line in lines) {
    //..         
     if (TryParseUserDetails(line, false, out data) {
       //...                                      
          wb.Navigate(url.Next());
    }
}

как дождаться загрузки страницы wb до цикла продолжения?

Я пытался использовать флаги опроса, установив переменную как true в WebBrowserDocumentCompletedEventHandler функции обратного вызова.а затем:

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
                            delegate(object sender2,
                                WebBrowserDocumentCompletedEventArgs args)
                            {

                             done = true;
                         });

// ..

  wb.Navigate(url.Next();
  while (!done)
   {

   }
   done = false;  

Я ищу что-то вроде:

wb.WaitForDone(); 

Любая помощь приветствуется.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Вы можете попытаться использовать AutoResetEvent вместо логического значения.Например:

Вне цикла:

AutoResetEvent evt = new AutoResetEvent(false);

Затем обработчик события:

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
                        delegate(object sender2,
                            WebBrowserDocumentCompletedEventArgs args)
                        {
                            evt.Set();
                        });

и затем в цикле:

evt.WaitOne();
1 голос
/ 24 ноября 2011

Почему бы просто не сделать то, что вы хотите внутри DocumentCompleted Callback, как указано здесь: SO Вопрос ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...