我正在运行 Windows 服务并使用循环和 Thread.Sleep 重复任务,使用计时器方法会更好吗?
如果是,一个代码示例会很棒
我目前正在使用这段代码来重复
int curMinute;
int lastMinute = DateTime.Now.AddMinutes(-1).Minute;
while (condition)
{
curMinute = DateTime.Now.Minute;
if (lastMinute < curMinute) {
// do your once-per-minute code here
lastMinute = curMinute;
}
Thread.Sleep(50000); // sleeps for 50 seconds
if (error condition that would break you out of this) {
break; // leaves looping structure
}
}
最佳答案
IMO,计时器是个更好的主意。这样,如果您的服务被要求停止,它可以非常快速地做出响应,并且不会再次调用计时器滴答处理程序......如果您正在 sleep ,服务经理将不得不等待 50 秒或杀死您的线程,两者都不是非常好。
关于C# 定时器或 Thread.Sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091710/