C#如何在foreach循环中完成WebBrowserDocument

C#如何在foreach循环中完成WebBrowserDocument,c#,C#,我想这可能很简单,但我想不是,我有大约100个网站需要加载到浏览器中。我已将它们加载到列表中,但我的foreach发生在网站加载之前。是否有人有办法在加载下一个之前加载并实际处理WebBrowserDocument?排队不起作用 foreach(string oneWebsite in ALLWebSites) { webBrowser1.Navigate(oneWebsite); webBrowser1.DocumentCompleted += new WebBrowserDocume

我想这可能很简单,但我想不是,我有大约100个网站需要加载到浏览器中。我已将它们加载到列表中,但我的foreach发生在网站加载之前。是否有人有办法在加载下一个之前加载并实际处理WebBrowserDocument?排队不起作用

foreach(string oneWebsite in ALLWebSites)
{
webBrowser1.Navigate(oneWebsite);
webBrowser1.DocumentCompleted += new     WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
//do work
}

自动resetEvent应该可以工作


在DocumentCOmplete处理程序的末尾,让浏览器导航到列表中的下一个站点。

类似的操作应该可以:

var websiteIndex = 0;
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

private void ProcessWebsite()
{
    if (websiteIndex < ALLWebSites.Count)
    {
        webBrowser1.Navigate(ALLWebSites[websiteIndex]);
        websiteIndex++;
    }
}

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    //do work

    // when work is done, process next one
    ProcessWebsite();
}
var网站索引=0;
webBrowser1.DocumentCompleted+=新的WebBrowserDocumentCompletedEventHandler(webBrowser1\u DocumentCompleted);
私人网站()
{
如果(网站索引<所有网站.计数)
{
浏览(所有网站[网站索引]);
网站索引++;
}
}
私有无效webBrowser1\u文档已完成(对象发送者,WebBrowserDocumentCompletedEventArgs e)
{
//工作
//工作完成后,处理下一个
ProcessWebsite();
}

您能提供您尝试的代码示例吗?与前面的问题相同:-1是明显的重复。这可能有效,也可能无效,取决于DocumentCOmplete事件在哪个线程上引发。我有一个组件,我尝试使用autoresetevent,它的事件在主UI线程上引发。。所以在这种情况下这不起作用。
var websiteIndex = 0;
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

private void ProcessWebsite()
{
    if (websiteIndex < ALLWebSites.Count)
    {
        webBrowser1.Navigate(ALLWebSites[websiteIndex]);
        websiteIndex++;
    }
}

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    //do work

    // when work is done, process next one
    ProcessWebsite();
}