如何在IHostedService中使用取消令牌?

时间:2018-04-30 15:16:34

标签: c# asp.net-core task-parallel-library

ASP.NET Core 2.0 documentation定义IHostedService接口,如下所示:

  

StartAsync(CancellationToken) - 在服务器启动并且触发IApplicationLifetime.ApplicationStarted后调用。 StartAsync包含启动后台任务的逻辑。

     

StopAsync(CancellationToken) - 在主机执行正常关闭时触发。 StopAsync包含结束后台任务和处理任何非托管资源的逻辑。如果应用程序意外关闭(例如,应用程序的进程失败),则可能不会调用StopAsync。

如果调用StopAsync来关闭服务,那么用于取消令牌参数的是什么?他们究竟应该如何使用?

1 个答案:

答案 0 :(得分:2)

传递给IHostedService.StopAsync()的取消令牌源自WebHost.StopAsync(),通常是取消令牌,它与ASP.NET核心应用程序的默认关闭命令相关联(例如 CTRL + C SIGTERM)。此令牌与绑定到(可配置)超时的新令牌链接。例如,请参阅RunAsync() extension method。我相信默认超时是5秒。这意味着当主持人在令牌源上调用Cancel()或超时启动时,将要求取消。