2013-07-26 96 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類。如果你使用這種方法 改變它。