Ниже показан код подмостки при создании нового проекта Worker Service с использованием VS 2019 / .Net 3.0.
public class Worker : BackgroundService
{
// ....
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Assuming this part takes 0.5 second
// code omitted
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
Я хочу, чтобы служба запускалась один развторой. Однако в приведенном выше коде предполагается, что выполнение кода до Task.Delay
занимает 0,5 секунды. Служба будет запускаться каждые 1,5 секунды вместо 1 секунды?
Я знаю, что таймер можно использовать для запуска некоторых действий. Однако, похоже, что службе Worker необходимо использовать await Task.Delay(..., stoppingToken)
для освобождения выполнения. Как можно использовать таймер для проекта Worker Service ( BackgroundService )?