2013-07-26 48 views
2

有没有什么会等待事件发生(我正在等待的是WebBrowser.DocumentCompleted),然后执行代码?事情是这样的:有没有“When”类型的东西?

如果(WebBrowser.DocumentCompleted)

不会工作,因为它会直接跳过的代码,如果它返回false。

+0

你可以为它创建一个awaiter(例如,使用'TaskCompletionSource'),并使用C#5'async'。 – SLaks

+1

你在写什么类型的程序?对于WinForms,WPF,控制台等,最好的答案是不同的。 – TheEvilPenguin

+0

@TheEvilPenguin WinForms – Minicl55

回答

5

你有没有考虑订阅到WebBrowser.DocumentCompleted事件?

webBrowser1.Navigate("http://www.stackoverflow.com/"); 
webBrowser1.DocumentCompleted += (sender, args) => 
{ 
    //process web page 
}; 
//keep on processing asynchronously here... (if you want :-p) 
4

你必须绑定到事件:

WebBrowser.DocumentCompleted += WebBrowser_DocumentCompleted; 

... 

private WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    // Respond to the event 
} 

延伸阅读:

0

从您的要求,在我看来有两个possibilitie s到解决这个问题取决于条件:

  1. 注册DocumentCompleted事件并使用WebBrowser_DocumentCompleted事件处理程序来处理 您计划执行的东西。这段代码将等待直到 文件未完全加载。

  2. 如果使用Timer类进行连续轮询,则应该查看WebBrowser.IsBusy属性。如果是false则文件 已加载完毕。但如果您有DocumentCompleted事件的设施,则不会使用 Timer类。如果你使用这种方法 改变它。