如何在特定时间后执行下一个循环?

时间:2011-06-20 06:19:26

标签: c# .net winforms webbrowser-control

在foreach循环中,如何在第1次循环5秒后执行第2次循环,然后在第2次循环3秒后执行第3次循环?

第一循环

5秒后

第二次循环

3秒后

第3次循环

当我在Windows窗体中进行Webbrowser自动化时, 有很多链接可以自动点击,单击链接后,它会自动将文本插入文本框并单击提交按钮。 过程:

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

    Application.DoEvents();

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

    btnSubmit.InvokeMember("click");
 }

我现在面临的问题是,循环太快,直到Webbrowser无法完成实现txtboxprice.setattribute和btnsubmit.invokemember,它已经点击了下一个循环的ahref。

因此,我需要触发时间控制,以确保在继续下一个循环之前实现txtboxprice.setattribute和btnsubmit.invokemember。

3 个答案:

答案 0 :(得分: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 :(得分:2)

Thread.Sleep方法将当前线程阻塞指定的毫秒数。

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

答案 2 :(得分: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++)
{
....
}

但我想知道你为什么要做这样的事情。