.NET Core延迟与计划

时间:2018-10-27 15:41:27

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

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

编辑:顺便说一句,我没有任何特殊要求,只是想了解为什么一个比另一个更好。任务计划程序需要大量代码,所以为什么值得执行计划程序任务?

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

1 个答案:

答案 0 :(得分:1)

Task.Delay按照锡罐上的内容行事,就是这样。

IScheduledTask / IHostedService实现提供了几个功能。

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

您的问题是关于控制台应用程序的,从here开始,在.Net Core 2.1中,WebHost将被通用主机替代,因此不再专门与ASP.NET相关。

Tangent :我有一个相关的问题ASP.Net Core 2.0 Shutdown Timeout, what issues can I expect using a very long time out of 2 min? <-我在2分钟内的生产中没有任何问题。