如何在C#中进行无限循环,每次迭代延迟1分钟?

时间:2013-12-10 17:13:35

标签: c# .net

如何在C#中执行无限循环,每次迭代延迟1分钟?

有没有办法没有使用某种带x ++的变量并将x设置为一些非常大的数字?

5 个答案:

答案 0 :(得分:10)

解决方案1: 如果您希望wait 1 minute Main Thread而不挂Timer,则最好使用Timer Tick控件。

第1步:您需要订阅Interval活动 第2步:Timer的{​​{1}}属性设置为60000毫秒,以便为每分钟提升事件。
第3步:Tick Event Handler只需执行您想要执行的操作 第4步:只要您想停止计时器,就可以调用timer1.Stop()方法。

注意:如果您stop timer infinite变为stop。 如果您想timer timer1.Stop();,可以致电 System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); timer1.Interval=60000;//one minute timer1.Tick += new System.EventHandler(timer1_Tick); timer1.Start(); private void timer1_Tick(object sender, EventArgs e) { //do whatever you want }

Console Application

解决方案2:

编辑:从下面的评论中:如果OP(原始海报)试图从System.Timers.Timer Tick开始运行,可以使用

注意:而不是处理Elapsed事件,OP必须处理 class Program { static System.Timers.Timer timer1 = new System.Timers.Timer(); static void Main(string[] args) { timer1.Interval = 60000;//one minute timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); timer1.Start(); Console.WriteLine("Press \'q\' to quit the sample."); while (Console.Read() != 'q') ; } static private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e) { //do whatever you want Console.WriteLine("I'm Inside Timer Elapsed Event Handler!"); } } 事件。

完整代码:

{{1}}

答案 1 :(得分:3)

for(;;)
{
    //do your work
    Thread.Sleep(60000);
}

这不是最佳选择,但完全符合要求。

答案 2 :(得分:3)

while (true)
{
    System.Threading.Thread.Sleep(60000);
}

现在,如果我们假设您不希望阻止此线程并且您可以处理线程问题,那么您可以执行以下操作:

System.Threading.Tasks.Task.Run(() =>
{
    while (true)
    {
       // do your work here
        System.Threading.Thread.Sleep(60000);
    }
});

Task将您的工作放在ThreadPool线程上,因此它在后台运行。

您还可以查看BackgroundWorker,如果它更适合您想要的内容。

答案 3 :(得分:0)

来自MSDN的类似问题: >

System.Threading.Thread.Sleep(5000);
     

此代码使您的应用程序等待5秒钟。

根据需要更改您想要睡觉的时间数(一分钟,这将是60000)。 您可以将它放在while循环中的所需位置

答案 4 :(得分:0)

while(true){
    Sleep(60000);}

这将是一个阻塞调用,因此您可能希望将其放在自己的线程或任何类型的UI上,这样您可能会严重挂起。

Sleep位于System.Threading.Thread命名空间中。