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

ema*_*dne 8 c# task-parallel-library asp.net-core

ASP.NET核心2.0文档定义了IHostedService界面如下:

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

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

如果StopAsync调用了关闭服务,那么取消令牌参数有什么作用?应该如何使用它们?

Hen*_*ema 5

传递给的取消令牌IHostedService.StopAsync()源自WebHost.StopAsync()并且通常是绑定到 ASP.NET Core 应用程序的默认关闭命令(例如CTRL+CSIGTERM)的取消令牌。此令牌与绑定到(可配置)超时的新令牌相关联。例如,请参阅RunAsync()扩展方法。我相信默认超时是 5 秒。这意味着当主机调用Cancel()令牌源或超时开始时,将请求取消。