C#访问Webbrowser的多个链接

时间:2016-11-05 12:58:51

标签: c# asynchronous autoresetevent

我想在循环中访问多个链接。

访问网站后,我希望线程等到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完成的方法。

1 个答案:

答案 0 :(得分:0)

浏览器通常使用一个GUI线程。您使用WaitOne阻止线程。您应该使用在一个线程中工作的不同同步机制。