net core中BackgroundService

public class PeriodicBackgroundTask : BackgroundService
{
    private readonly TimeSpan _period = TimeSpan.FromSeconds(5);
    private readonly ILogger<PeriodicBackgroundTask> _logger;
    public PeriodicBackgroundTask(ILogger<PeriodicBackgroundTask> logger)
    {
        _logger = logger;   
    }
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
         using PeriodicTimer timer = new PeriodicTimer(_period);

        while (!stoppingToken.IsCancellationRequested &&
               await timer.WaitForNextTickAsync(stoppingToken))
        {
            _logger.LogInformation("Executing PeriodicBackgroundTask");
            System.Console.WriteLine("Executing PeriodicBackgroundTask");
        }
    }
}

 用到了.Net6新定时器PeriodicTimer,可以更方便的处理异步。

posted @ 2023-05-28 10:18  vba是最好的语言  阅读(103)  评论(0编辑  收藏  举报