我有,我想添加一个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事件,但仍可以运行脚本,以动态方式添加更多网页。 –