Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在特定时间后执行下一个循环?_C#_.net_Winforms_Webbrowser Control - Fatal编程技术网

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

C# 如何在特定时间后执行下一个循环?,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,在foreach循环中,如何在第一个循环的5秒后执行第二个循环,然后在第二个循环的3秒后执行第三个循环 第一圈 5秒后 第二环路 3秒后 第三环路 当我在windows窗体中执行Webbrowser自动化时, 自动点击的链接很多,点击链接后,它会自动将文本插入文本框并点击提交按钮。 过程: foreach (HtmlElement ahref in ahrefs) { ahref.InvokeMember("click"); Application.DoEvents();

在foreach循环中,如何在第一个循环的5秒后执行第二个循环,然后在第二个循环的3秒后执行第三个循环

第一圈

5秒后

第二环路

3秒后

第三环路

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

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

    Application.DoEvents();

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

    btnSubmit.InvokeMember("click");
 }
我现在面临的问题是,在Webbrowser无法完成txtboxprice.setattribute和btnsubmit.invokeMemember的实现之前,循环太快了,它已经单击了下一个循环的ahref

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

方法在指定的毫秒数内阻塞当前线程

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(..) { }
for (int i = 0; i < 5; i++)
{
        Console.WriteLine("Sleep for 2 seconds.");
        Thread.Sleep(2000);
}
for(int i=0;i<5;i++)
{
控制台。WriteLine(“睡眠2秒”);
《睡眠》(2000年);
}
方法在指定的毫秒数内阻止当前线程

for (int i = 0; i < 5; i++)
{
        Console.WriteLine("Sleep for 2 seconds.");
        Thread.Sleep(2000);
}
for(int i=0;i<5;i++)
{
控制台。WriteLine(“睡眠2秒”);
《睡眠》(2000年);
}
你可以这样做

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++)
{
....
}
for(inti=0;i您可以

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++)
{
....
}

用于(int i=0;我想他是在问如何在每次迭代中暂停,所以线程。睡眠需要放在for each循环中,并参数化一些方法。@Nathan:可能吧。但最初的问题清楚地问了如何在循环之间暂停。@abatischev,对不起,我的英语不好,Nathan是对的。此外,是线程。睡眠将暂停应用程序。@在没有做任何事情的情况下继续工作?我想他是在问如何在每次迭代中暂停,所以线程。睡眠需要放在for each循环中,并参数化一些方法。@Nathan:也许吧。但最初的问题清楚地问到如何在循环之间暂停。@abatischev,对不起,我的英语不好,Nathan是对的。另外,Thread.s是吗leep将暂停应用程序的工作而不执行任何操作?为什么要硬编码这样的数字而不是某种排序异步方法?为什么要硬编码这样的数字而不是某种排序异步方法?