简体   繁体   中英

C# How to do WebBrowserDocumentComplete in a foreach loop

I thought this might be simple but i guess it's not, i have like 100 websites i need to load into a browser. I've loaded them into a List but my foreach happens before the website loads. Does anybody have a way to make each of these load and actually process WebBrowserDocumentComplete before loading the next one? queue doesn't work.

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

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

An AutoResetEvent should work

http://msdn.microsoft.com/en-us/library/system.threading.waithandle.waitone(v=vs.71).aspx

static AutoResetEvent autoEvent = new AutoResetEvent(false);


webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
foreach(string oneWebsite in ALLWebSites) 
{ 
webBrowser1.Navigate(oneWebsite); 
autoEvent.WaitOne(new TimeSpan(0, 1, 0), false))
}  

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)     
{ 
//do work 
autoEvent.Set();
} 

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

Something like this should work:

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();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM