c# - Task.Delay 在等待时会浪费系统资源吗?

标签 c# task

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

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

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

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

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

最佳答案

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

关于c# - Task.Delay 在等待时会浪费系统资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19246237/

相关文章:

c# - 终结器中处置的资源与处置中释放的资源有什么区别

c# - 如何在 EPPlus 中使用 C# 删除 AutoFilter

c# - 使用 C# 将同步方法转换为异步方法

Ant Get任务超时问题

android - Phonegap 后台任务计划程序 (Android)

visual-studio-code - VSCode 任务将命令包装在 ' ' 引号中,在多行命令上破坏了参数

c# - OData 是否允许用户使用 IQueryable 查询 SQL EF 数据库?

c# - 在没有 APNS 的应用程序中显示 Apple 警报角标(Badge)

c# - Visual Studio Xamarin 模板缺少程序集引用

android - 在 Task<T> 完成之前暂停协程的正确方法