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