Web浏览器没有触发DocumentCompleted事件

本文关键字:DocumentCompleted 事件 浏览器 Web | 更新日期: 2023-09-27 18:03:30

我试图实现简单的网页屏幕捕获程序。当我在UI线程上使用我的代码时,一切似乎都没有问题,但是当我从非UI线程调用方法时,我无法再获得WebBrowserDocumentCompleted事件。我还试了这个:

System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser();
        wb.DocumentCompleted += WebBrowserDocumentCompleted;
        wb.Visible = true;
        wb.ScrollBarsEnabled = false;
        wb.ScriptErrorsSuppressed = true;
        wb.Navigate(url);
        while (wb.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
        {
            Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                              new Action(delegate { }));
        }

程序只是在while循环中无限期挂起。什么好主意吗?

Web浏览器没有触发DocumentCompleted事件

像这样:

public void Start()
{
    System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser();
    wb.DocumentCompleted += WebBrowserDocumentCompleted;
    wb.Visible = true;
    wb.ScrollBarsEnabled = false;
    wb.ScriptErrorsSuppressed = true;
    wb.Navigate(url);
}
private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if( (sender as WebBrowser).ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete)
    {
        // Do what ever you want to do here when page is completely loaded.
    }
}

解决方案令人难以置信。经过几个小时的寻找和尝试,我找到了答案。

webBrowser1的属性中,我设置了AllowNavigation = false

如果设置为false,则仅注册DocumentCompleted事件一次,但当设置为AllowNavigation = true(默认设置)时,DocumentCompleted事件被多次触发。

在构建输出窗口中,查找以下警告:

"发现同一从属程序集的不同版本之间存在冲突"

如果您发现此警告,请确保所有程序集使用冲突的引用程序集的相同版本,并重新检查WebBrowser是否提供您的事件。

相关文章:
  • 没有找到相关文章