Рабочая служба - это новый способ написания службы Windows в .NET Core 3.x. Рабочий класс расширяет Microsoft.Extensions.Hosting.BackgroundService
и реализует ExecuteAsync
. В документации по этому методу говорится:
Этот метод вызывается при запуске IHostedService. Реализация должна возвращать задачу, которая представляет время жизни выполняемых длительных операций.
Что должен возвращать этот метод, если работа, выполняемая службой, не является длительной в обычном смысле, а управляется событиями? Например, я пишу службу, которая устанавливает _ 3_. Как бы я инкапсулировал это в Task
? Нет Task.Never()
, так что я должен просто вернуть что-то на основе очень длинного Task.Delay()
, чтобы служба не закрылась?
private async Task DoStuffAsync(CancellationToken cancel)
{
// register events
while(!cancel.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromDays(1000000), cancel);
}
// unregister events
}