如何解决谁触发.NET Core托管服务中的CancellationTokenSource的Cancel方法?
我在实现IHostedService的类中实现了StartAsync,如下所示:
public async Task StartAsync(CancellationToken cancellationToken)
{
Token = cancellationToken;
IsRunning = true;
Logger.Loginformation("Service start");
await UploadDailyTotals().ConfigureAwait(false);
Timer.Start();
}
我将收到的令牌分配给了一个类变量。我正在使用基于计时器的方法来连续运行方法。
async void Timer_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
{
try
{
if (IsRunning)
await UploadDailyTotals().ConfigureAwait(false);
}
catch (Exception ex)
{
Logger.LogError(ex.GetBaseException().Message);
}
finally
{
Timer.Start();
}
}
如果请求取消,则UploadDailyTotals的一部分将使用取消令牌停止工作,但仅在完成以下单元中的所有工作之后:
async Task UploadDailyTotals()
{
...
while (sendDate <= endDate)
{
if (Token.IsCancellationRequested)
return;
...work logic here...
}
这只是方法的一部分,但包含了我所想知道的所有内容。 我的问题是,关闭应用程序时,框架是否触发CancellationTokenSource的Cancel方法?在触发StopAsync方法之前还是之后?我什至可以使用这里显示的令牌吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。