【问题标题】:.NET Core Delay vs Schedule.NET Core 延迟与计划
【发布时间】:2019-04-01 02:09:29
【问题描述】:

我试图在 x 分钟后运行后台计划任务(在控制台应用程序中),我可以使用 Task.Delay 轻松实现它。但是,使用任务计划程序有什么好处呢?

编辑:顺便说一句,我没有任何特殊要求,只是想了解为什么一个比另一个更好。一个任务调度器需要大量的代码,那么为什么值得调度器任务呢?

这是我关注的一个例子:https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html

【问题讨论】:

  • 这不取决于您的用例吗?
  • @John 不,我没有任何特殊要求,只是想了解为什么一个比另一个更好。
  • 有机会您可以链接到或提供调度程序任务的代码示例。我不熟悉它,快速谷歌并没有显示出明显的结果。
  • @ttugates 请看这个例子:blog.maartenballiauw.be/post/2017/08/01/…

标签: c# .net-core task scheduled-tasks console-application


【解决方案1】:

Task.Delay 做它在锡上所说的事情,仅此而已。

IScheduledTask/IHostedService 实现提供了几个特性。

  1. 您有一个自包含类,可以注入依赖项以在其自己的范围内运行代码。
  2. IHostedService 提供了一种优雅关闭的机制。在 ASP.NET 应用程序中,应用程序可以被回收,您无法保证调用 Task.Delay(1000*60) 的代码将执行。使用IScheduledTask 解决方案,您可以实现StopAsync() 方法以优雅地取消任务。您还可以配置主机配置关闭超时。

您的问题是关于控制台应用程序的,从 here 看来,从 .Net Core 2.1 开始,WebHost 将被替换为 Generic Host,因此不再专门针对 ASP.NET。

Tangent:我有一个相关问题ASP.Net Core 2.0 Shutdown Timeout, what issues can I expect using a very long time out of 2 min?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2021-07-10
    • 2013-01-30
    相关资源
    最近更新 更多