我正在尝试定期运行一段代码,时间间隔介于两者之间。可能有多个此类代码段同时运行,因此我转向Task.Run
以利用异步方法调用和并行性。现在我想知道我应该如何实现时间间隔!
直接的方式是使用Task.Delay
这样:
var t = Task.Run(async delegate
{
await Task.Delay(1000);
return 42;
});
但是我想知道这样做是否正确,因为我相信所有Task.Delay
所做的就是睡眠线程并在句点结束后恢复它(即使我不确定)。如果是这种情况,则即使任务未运行,系统也必须为任务的线程资源付费。
如果是这种情况,有没有办法在一段时间后运行任务而不浪费任何系统资源?
答案 0 :(得分:8)
Task.Delay
不会导致线程休眠。它使用计时器。