C#使用Webbrowser访问多个链接
我想在一个循环中访问多个链接 访问站点后,我希望线程在访问下一个链接之前等待C#使用Webbrowser访问多个链接,c#,asynchronous,autoresetevent,C#,Asynchronous,Autoresetevent,我想在一个循环中访问多个链接 访问站点后,我希望线程在访问下一个链接之前等待documentCompleted完成 foreach (HtmlElement link in linkArray) { OpenNewProduct(link.ToString()); } public void OpenNewProduct(string url) { WebBrowser webBrowser = new WebBrowser(); webBrowser.Documen
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()
上
出于某种原因,异步方法或自动resetEvent似乎不起作用
我需要找到一种方法,等待
documentCompleted
完成。浏览器通常使用一个GUI线程。你很擅长用WaitOne阻塞线程。您应该使用在一个线程中工作的不同同步机制。浏览器通常使用一个GUI线程。你很擅长用WaitOne阻塞线程。您应该使用在一个线程中工作的不同同步机制。Hmm,您不应该阻止GUI线程。对于您的问题,您可以在文档完成时在GUI线程上安排一个新任务。这可以通过使用计时器并将OpenNewProduct设置为计时器函数来完成。嗯,您不应该阻止GUI线程。对于您的问题,您可以在文档完成时在GUI线程上安排一个新任务。这可以通过使用计时器并将OpenNewProduct设置为计时器函数来实现。