3

我正在尝试定期运行一段代码,其间有时间间隔。可能有多个这样的代码段同时运行,所以我转向Task.Run利用异步方法调用和并行性。现在我想知道我应该如何实现时间间隔!

直接的方法是这样使用Task.Delay

var t = Task.Run(async delegate 
{ 
   await Task.Delay(1000); 
   return 42; 
});

但我想知道这样做是否是正确的方法,因为我相信所有的Task.Delay做法都是让线程休眠并在周期结束后恢复它(即使我不确定)。如果是这种情况,那么即使任务没有运行,系统也必须为任务的线程资源付费。

如果是这种情况,有没有什么方法可以在一段时间后运行任务而不浪费任何系统资源?

4

1 回答 1

10

Task.Delay不会导致线程休眠。它使用计时器。

于 2013-10-08T11:16:48.097 回答