我需要暂停循环,直到webbrowser完成页面加载。
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
页面加载?
我尝试使用polling-flags,在WebBrowserDocumentCompletedEventHandler
回调函数中将变量设置为true。
然后:
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
delegate(object sender2,
WebBrowserDocumentCompletedEventArgs args)
{
done = true;
});
// ..
wb.Navigate(url.Next();
while (!done)
{
}
done = false;
我正在寻找类似的东西:
wb.WaitForDone();
感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
为什么不在DocumentCompleted
回调中简单地完成您想要的内容,如下所示:SO Question?
答案 1 :(得分:1)
您可以尝试使用AutoResetEvent而不是boolean。像:
圈外:
AutoResetEvent evt = new AutoResetEvent(false);
然后是事件处理程序:
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
delegate(object sender2,
WebBrowserDocumentCompletedEventArgs args)
{
evt.Set();
});
然后在循环中:
evt.WaitOne();