簡體   English   中英

C#如何在foreach循環中執行WebBrowserDocumentComplete

[英]C# How to do WebBrowserDocumentComplete in a foreach loop

我認為這可能很簡單,但我想並非如此,我有100個網站需要加載到瀏覽器中。 我已經將它們加載到列表中,但是我的foreach發生在網站加載之前。 是否有人有辦法進行所有這些加載,並在加載下一個之前實際處理WebBrowserDocumentComplete? 隊列不起作用。

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

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

一個AutoResetEvent應該工作

http://msdn.microsoft.com/zh-cn/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處理程序的末尾,使瀏覽器導航到列表中的下一個站點。

這樣的事情應該起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM