如何在C#中执行无限循环,每次迭代延迟1分钟?
有没有办法没有使用某种带x ++的变量并将x设置为一些非常大的数字?
答案 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
命名空间中。