我想定期运行一段编程代码,并在其中设置时间间隔。可能会有多个这样的代码片段同时运行,因此我使用了
直接的方法是像这样使用
Task.Run
来利用异步方法调用和并行处理。现在我想知道如何实现时间间隔!直接的方法是像这样使用
Task.Delay
:var t = Task.Run(async delegate
{
await Task.Delay(1000);
return 42;
});
但我想知道这样做是否是正确的方式,因为我相信所有的 Task.Delay
做的只是让线程休眠,并在时间结束后恢复它(尽管我不确定)。如果是这种情况,那么系统必须支付任务线程资源的成本,即使任务没有运行。
如果是这种情况,有没有任何方法可以在一段时间后运行任务而不浪费任何系统资源?
System.Threading.Timer
。 - Matthew WatsonDelay
函数所使用的计时器。 - user2586804await Task.Delay(1000)
不会阻塞线程,不像Task.Delay(1000).Wait()
会这样做,更多细节。 - noseratio - open to work