1
私はループ内で複数のリンクを参照しています。C#ウェブブラウザで複数のリンクを参照
サイトにアクセスした後、次のリンクにアクセスする前にスレッドが完了し、documentCompleted
が完了するまで待ちます。
foreach (HtmlElement link in linkArray)
{
OpenNewProduct(link.ToString());
}
public void OpenNewProduct(string url)
{
WebBrowser webBrowser = new WebBrowser();
webBrowser.DocumentCompleted += product_DocumentCompleted;
webBrowser.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
webBrowser.Navigate(url);
_waitForPageProccesingHandle.WaitOne();
}
private void product_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
notHeb();
notRedirected(sender, e);
((Control)webBrowser1).Enabled = false;
getProduct();
_waitForPageProccesingHandle.Set();
}
ブラウザはWaitOne()
でフリーズしています。
何らかの理由で、非同期メソッドまたは自動検出が機能していないようです。
documentCompleted
が完了するまで待つ方法を見つける必要があります。
あなたはどのメカニズムに留意していますか? – user3927030
ええと、GUIスレッドを決してブロックするべきではありません。あなたの問題については、ドキュメントが完成したときにGUIスレッドで新しいタスクをスケジュールすることができます。これは、タイマーを使用し、OpenNewProductをタイマー機能として設定することで実行できます。 – smibe