C# 定时器或 Thread.Sleep

标签 c# timer

我正在运行 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/

相关文章:

c++ - 使用 QueryPerformanceCounter() 倒计时

c++ - 是否有可能在 Linux 中的 C/C++ 中获得指定日期/时间到达时的通知?

c# - 使用 BotAuth 时如何正确注销

c# - 仅在特定参数时才匹配路由

c# - 在 C# 中动态创建的按钮中使用其名称选择按钮

c# - SQL Server 2008 和.Net 4.0?

c# - 继承自 System.Timers.ElapsedEventArgs 使单元测试更容易

java - 如何在 (mm :ss) format using editText?

javascript - 禁用 href 链接一段时间

c# - 使用唯一 ID 以编程方式创建按钮