В рамках попытки корректно завершить работу веб-хоста создается токен отмены в сочетании с настроенным ShutdownTimeout
var timeoutToken = new CancellationTokenSource(Options.ShutdownTimeout).Token;
if (!cancellationToken.CanBeCanceled)
{
cancellationToken = timeoutToken;
}
else
{
cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, timeoutToken).Token;
}
Источник
Это становится маркером отключения при остановке размещенных служб.
// Fire the IHostedService.Stop
if (_hostedServiceExecutor != null)
{
await _hostedServiceExecutor.StopAsync(cancellationToken).ConfigureAwait(false);
}
Изучая потенциальные проблемы с размещенными сервисами, я обнаружил следующее из официальной документации.
Особенности развертывания и выводы
Важно отметить, что способ развертывания ASP.NET Core WebHost или .NET Core Host может повлиять на окончательное решение. Например, если вы развернете свой WebHost в IIS или обычной службе приложений Azure, ваш хост может быть отключен из-за перезагрузки пула приложений. Но если вы развертываете свой хост как контейнер в оркестратор, такой как Kubernetes или Service Fabric, вы можете контролировать определенное количество живых экземпляров своего хоста. Кроме того, вы можете рассмотреть другие подходы в облаке, специально разработанные для этих сценариев, такие как функции Azure.
Но даже для WebHost, развернутого в пуле приложений, существуют сценарии, такие как повторное заполнение или очистка кеша приложения в памяти, которые все еще будут применимы.
Интерфейс IHostedService предоставляет удобный способ запуска фоновых задач в веб-приложении ASP.NET Core (в .NET Core 2.0) или в любом процессе / хосте (начиная с .NET Core 2.1 с IHost). Его основным преимуществом является возможность, которую вы получаете благодаря постепенной отмене кода очистки ваших фоновых задач при завершении работы самого хоста.
Теперь из этого, исходя из ваших опасений, я бы понял, что нет никаких гарантий, что ваши долгосрочные задачи будут выполнены, но им может быть предоставлена возможность постепенного отмены в зависимости от среды хостинга, как объяснено в приведенном выше заявлении.