2011-06-20 11 views
1

foreachループでは、第1ループの5秒後に第2ループを実行し、第2ループの3秒後に第3ループを実行する方法は?特定の時間の後に次のループを実行する方法は?

第一ループ

5の後に2回目のループ

私はWindowsフォームでWebBrowserの自動化をしていたよう第三ループ

3の後、 が多数あります自動的にリンクがクリックされると、リンクがクリックされた後、自動的にテキストがテキストボックスをクリックし、送信ボタンをクリックします。 プロセス:

foreach (HtmlElement ahref in ahrefs) 
{ 
    ahref.InvokeMember("click"); 

    Application.DoEvents(); 

    txtboxPrice.SetAttribute("value", "100"); 

    btnSubmit.InvokeMember("click"); 
} 

私が今直面し何の問題があり、ループは、ウェブブラウザがtxtboxprice.setattributeとbtnsubmit.invokememberを実装完了しないことができるまで、それはすでに次のループのAHREFをクリックした速すぎます。

したがって、txtboxprice.setattributeとbtnsubmit.invokememberが次のループに進む前に実装されていることを確認するためには、時間管理を開始する必要があります。

+1

何故ソート非同期のアプローチの代わりにそのような数値をハードコードするのですか? – abatishchev

答えて

5
using System.Threading; 

foreach(..) { } // your for or foreach or any code you want 

Thread.Sleep(5000); // pause the current thread on x milliseconds 

foreach(..) { } 

Thread.Sleep(3000); 

foreach(..) { } 
+1

私は彼がそれぞれの反復中にどのように休止するかを尋ねていると思うので、Thread.Sleepを各ループの内部に配置し、いくつかの方法をパラメータ化する必要があります。 –

+0

@Nathan:多分。しかし、最初の質問は明らかにループ間で休止する方法を尋ねています。 – abatishchev

+0

@abatischev、悪い英語のために申し訳ありません、ネイサンは正しいです。 さらに、thread.sleepは何もせずにアプリケーションが動作するのを一時停止しますか? – DEN

2

Thread.Sleepメソッドは、指定されたミリ秒数の現在のスレッドをブロックします。

for (int i = 0; i < 5; i++) 
{ 
     Console.WriteLine("Sleep for 2 seconds."); 
     Thread.Sleep(2000); 
} 
+0

私の質問を更新しました。見てください – DEN

0

あなたは

for(int i=0;i<number_of_times;i++) 
{ 
.... 
    if(i == number_of_times - 1) 
     Thread.Sleep(5000);//time in millsecond, namespace System.Threading 
} 

for(int i=0;i<number_of_times;i++) 
{ 
.... 
    if(i == number_of_times - 1) 
     Thread.Sleep(3000); 
} 

for(int i=0;i<number_of_times;i++) 
{ 
.... 
} 

を行うことができますしかし、あなたはそのようなことをしたい私はなぜだろうか。

+0

私は私の質問を更新しました、見てください – DEN

関連する問題