C#Windows服务-每秒调用方法的最佳方法(不包括Windows.Forms.Timer)

时间:2019-06-18 16:48:17

标签: c# timer

我想每秒调用一个方法。 通常,该方法将在几毫秒后完成。但有时可能需要2到3秒。不使用Windows.Forms.Timer(单线程)来处理此问题的最佳方法是什么。 现在,我的解决方案是使用System.Timers.Timer并设置_timer.AutoReset = false,在完成“计时器经过的方法”后,我使用_timer.Start()重新启动计时器。

有更好的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

计时器以给定的时间间隔执行。那就是.net框架中使用的计时器的定义。如果您想要不同的行为,也许计时器不是您想要的。如果我正确理解了您的问题,则希望将方法调用间隔1秒。

完成此任务的一种方法是使用异步任务。

//in your start method
Task.Run(() => YourRepeatingTask(CancellationToken.None));

private async Task YourRepeatingTask(CancellationToken token)
{
  while (true) //check for conditions here
  {
    //Do stuff here

    await Task.Delay(TimeSpan.FromSeconds(1), token);
  }
}