.NET Core 实现后台任务(定时任务)IHostedService

  • program添加服务
    // .Net 6
    builder.Services.AddHostedService<TestHostedService>();
    
    // .Net  5 及以下
    services.AddHostedService<TestHostedService>();

     

  • 添加工作类
 public class TestHostedService : IHostedService, IDisposable
    {
        private Timer? _timer;

        /// <summary>
        /// 任务开始
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));

            return Task.CompletedTask;
        }

        private void DoWork(object? state)
        {
            Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
        }

        /// <summary>
        /// 任务停止
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task StopAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("StopAsync");

            return Task.CompletedTask;
        }


        public void Dispose()
        {
            _timer?.Dispose();
        }
    }

 

  • 效果

 

posted @ 2023-03-03 09:44  Echo_xxx  阅读(179)  评论(0编辑  收藏  举报