在调用 WebBrowser.Refresh 后,我应该等待多长时间才能执行某些操作
本文关键字:长时间 执行 操作 等待 WebBrowser 调用 Refresh 我应该 | 更新日期: 2023-09-27 17:56:30
>我有一个网页,我正在从中撕下元素以用于我正在编写的程序。将特定元素加载到网页中需要一些时间,因此我想我会使用WebBrowser.Refresh()
来完成获取最新代码。不幸的是,如果您想在之后执行任何操作,这样做会导致很多头痛,因为它不会触发DocumentCompleted
事件(在任何人询问之前,它甚至在 MSDN 上明确说明)。
所以我需要一种方法来允许程序在刷新页面后 2 秒什么都不做。问题是我不知道该怎么做,也无法获得更新的WebBrowser.Document
。如果我使用 Thread.Sleep,整个应用程序在睡眠时会挂起,并且不会更新任何内容。
如果我立即尝试,我总是会遇到 WebBrowser 对象永远挂起或抛出空强制转换异常的蹩脚问题。
有没有其他人遇到过这种问题(或类似的东西)并找到了解决方案?
你为什么不再次导航到 URL?
webBrowser1.Navigate(webBrowser1.Url);
这将触发所需的事件处理程序。
我在WebBrowser
在所需时间刷新时遇到了类似的问题。正如您所发现的,尝试按需刷新它是没有希望的;HTTP 响应和 HTML 呈现都是不确定的。
我的建议是附加到WebBrowser
的 DocumentCompleted 事件,在后台早期调用所需的网页并向用户显示一些东西来分散他们的注意力,然后在DocumentCompleted
触发后显示已完成的WebBrowser
。
如果你想
偷懒并且不使用后台线程:
wb.Refresh();
while ((wb.ReadyState != WebBrowserReadyState.Complete)) {
Application.DoEvents();
}
//Refresh is now complete
只有在所有 Ajax 和内容完成加载后,才应WebBrowserReadyState.Complete
ReadyState
。