ASP.NET Core 2.0 documentation定义IHostedService接口,如下所示:
StartAsync(CancellationToken) - 在服务器启动并且触发IApplicationLifetime.ApplicationStarted后调用。 StartAsync包含启动后台任务的逻辑。
StopAsync(CancellationToken) - 在主机执行正常关闭时触发。 StopAsync包含结束后台任务和处理任何非托管资源的逻辑。如果应用程序意外关闭(例如,应用程序的进程失败),则可能不会调用StopAsync。
如果调用StopAsync
来关闭服务,那么用于取消令牌参数的是什么?他们究竟应该如何使用?
答案 0 :(得分:2)
传递给IHostedService.StopAsync()
的取消令牌源自WebHost.StopAsync()
,通常是取消令牌,它与ASP.NET核心应用程序的默认关闭命令相关联(例如 CTRL + C 或SIGTERM
)。此令牌与绑定到(可配置)超时的新令牌链接。例如,请参阅RunAsync()
extension method。我相信默认超时是5秒。这意味着当主持人在令牌源上调用Cancel()
或超时启动时,将要求取消。