Web浏览器不会触发DocumentCompleted事件

Xar*_*das 3 c# multithreading webbrowser-control

我正在尝试实现简单的网页截屏程序.当我在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 { }));
        }
Run Code Online (Sandbox Code Playgroud)

程序只是在循环中挂起,无限期.有任何想法吗?

Cas*_*rah 5

像这样的东西:

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你完成任务.

  • 我确实有这个实现,但我的事件不会触发。我正在将网络浏览器用于 STA 后台线程。 (2认同)