Как я могу запускать рабочий сервис (BackgroundService) раз в секунду? - PullRequest
0 голосов
/ 21 октября 2019

Ниже показан код подмостки при создании нового проекта 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 )?

...