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

Posted Echoxxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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();
        
    

 

  • 效果

 

以上是关于.NET Core 实现后台任务(定时任务)IHostedService的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core2.2+Quartz.Net 实现web定时任务

Asp-Net-Core开发笔记:集成Hangfire实现异步任务队列和定时任务

.net core 任务调度

.Net Core小技巧 - Hosted Services + Quartz实现定时任务调度

在 ASP.NET Core 中使用托管服务实现后台任务

.NET Core QuartzJob定时任务+Windows/Linux部署