4

簡単な Web ページの画面キャプチャ プログラムを実装しようとしています。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 ループに無期限にハングアップします。何か案は?

4

3 に答える 3

6

このようなもの:

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.
    }
}

これがあなたの探求に役立つことを願っています。

于 2013-03-12T20:49:28.000 に答える