0

以下のコードに問題があります。誰かがBackgroundWorkerで機能しない理由と、この問題を解決する方法を教えてもらえますか?

  string address = "My URL";
            webBrowser.Navigate(new Uri(address));
            do
            {
                Application.DoEvents();
            } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);
4

1 に答える 1

1

いいえ!!

新しいスレッドを開いて、そこからWebBrowserに指示する方がよいでしょう。

Application.DoEvents()ちょっと邪悪です。

始める方法は次のとおりです

System.Threading.Thread t = new System.Threading.Thread(() =>
{
    yourWebBrowser.Navigate("http://Google.com");
});

t.ApartmentState = System.Threading.ApartmentState.STA;
t.Start();

ページが読み込まれたことを通知するには、次のようにDocumentCompletedイベントをサブスクライブできます。

yourWebBrowser.DocumentCompleted += WebBrowserDocumentCompleted;

void WebBrowserDocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
    throw new NotImplementedException();
}
于 2012-11-27T07:36:03.713 に答える