2011-10-12 8 views
0

これは簡単かもしれないと思っていますが、そうではないと思います。私は100個のWebサイトをブラウザにロードする必要があります。私はリストにそれらをロードしたが、私のforeachはウェブサイトが読み込まれる前に起こる。誰もこれらのロードをそれぞれ行い、次のロード前に実際にWebBrowserDocumentCompleteを処理する方法がありますか?キューは機能しません。C#WebBrowserDocumentCompleteをforeachループで実行する方法

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

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

はあなたがしようとしているもののコードサンプルを提供することはできますか? – user957902

+0

コードが提供されました.. –

+1

あなたの前の質問と同じ:http://stackoverflow.com/questions/7678414/c-webbrowserdocumentcompletedeventhandler-inside-of-foreach-loop – BrokenGlass

答えて

1

アンAutoResetEventは、リスト内の次のサイトにブラウザをナビゲートしているのDocumentCompleteハンドラの終わりで

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

これは、発生したDocumentCOmpleteイベントのスレッドに応じて動作する場合と動作しない場合があります。私はautoreseteventを使って試したコンポーネントを持っていて、そのイベントはメインのUIスレッド上で発生しています。その場合はうまく動作しません。 –

0

を動作するはずです。

0

このような何かが動作するはずです:

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(); 
} 
関連する問題