我有,我想添加一個WebBrowser控件C#WPF:等待網頁瀏覽器加載頁面
我搜索如何檢查web瀏覽器加載頁面成功與否,這裏是代碼中的WPF程序:
private async Task PageLoad(int TimeOut)
{
TaskCompletionSource<bool> PageLoaded = null;
PageLoaded = new TaskCompletionSource<bool>();
int TimeElapsed = 0;
webBrowser.LoadCompleted += (s, e) =>
{
if (webBrowser.ReadyState != webBrowser.Complete) return;
if (webBrowser.Task.IsCompleted) return;
PageLoaded.SetResult(true);
};
while (PageLoaded.Task.Status != TaskStatus.RanToCompletion)
{
//interval of 10 ms worked good for me
await Task.Delay(10);
TimeElapsed++;
if (TimeElapsed >= TimeOut * 100)
{
//This prevents your method or thread from waiting forever
PageLoaded.TrySetResult(true);
}
}
}
但是,爲什麼它不適用於wpf。我如何轉換它?
我檢查了它並且ReadyState
Complete
和Task.IsCompleted
在wpf中沒有這樣的屬性。什麼是wpf的代碼?
[.NET的WebBrowser類的異步/等待實現]的可能重複(http://stackoverflow.com/questions/8610197/async-await-implementation-of-webbrowser-class-for-net) –
檢查該網頁加載是一個可疑的事情。網頁瀏覽器控件和IE都可以讓你連接到document.complete事件。但當然問題是,許多javascript框架也只有在文檔加載完成後纔開始加載。因此,您可以觸發document.complete事件,但仍可以運行腳本,以動態方式添加更多網頁。 –