1、介绍
Hangfire是一个开源的.NET任务调度框架,提供了内置集成化的控制台(后台任务调度面板),可以直观明了的查看作业调度情况
2、Nuget安装

3、编写代码
1)测试服务:FirstStartService
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | using Microsoft.Extensions.Hosting; namespace HangfireTest.Service {     public class FirstStartService: IHostedService     {         public async Task StartAsync(CancellationToken cancellationToken)         {             await Task.Run(() =>             {                 Console.WriteLine("FirstStartService......StartAsync");             }, cancellationToken);                          var id = Hangfire.BackgroundJob.Enqueue(() => Console.WriteLine("插入队列的任务"));             Hangfire.BackgroundJob.Schedule(() => Console.WriteLine("延迟的任务"), TimeSpan.FromSeconds(5));             Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("循环执行的任务"), Hangfire.Cron.Minutely);             Hangfire.BackgroundJob.ContinueJobWith(id, () => Console.WriteLine("指定任务执行之后执行的任务"));         }         public async Task StopAsync(CancellationToken cancellationToken)         {             await Task.Run(() =>             {                 Console.WriteLine("FirstStartService......StopAsync");             }, cancellationToken);         }     } }
   | 
 
2)测试服务:SecondStartService
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | using Microsoft.Extensions.Hosting; namespace HangfireTest.Service {     public class SecondStartService: IHostedService     {         public async Task StartAsync(CancellationToken cancellationToken)         {             await Task.Run(() =>             {                 Console.WriteLine("SecondStartService......StartAsync");             }, cancellationToken);         }         public async Task StopAsync(CancellationToken cancellationToken)         {             await Task.Run(() =>             {                 Console.WriteLine("SecondStartService......StopAsync");             }, cancellationToken);         }     } }
   | 
 
3)Startup.cs注入测试服务和Hangfire(此实例项目为VS2022 .NET6所建的ASP.NET Core Web API测试项目 Program.cs和其他版本建的项目有所区别,但注入方式没区别)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | 
 
  builder.Services.AddHostedService<FirstStartService>(); builder.Services.AddHostedService<SecondStartService>();  
 
 
  builder.Services.AddHangfire(x => x.UseSqlServerStorage("Data Source=localhost;Initial Catalog=Test;Integrated Security=True;"));  builder.Services.AddHangfireServer();  
 
 
  app.UseHangfireDashboard();
 
  | 
 
4、访问方式
访问调度控制面板:
本地访问方式:https://localhost:端口号/hangfire/
5、效果图

6、相关链接
① Hangfire官网
② Hangfire中文文档
③ Hangfire Github源码
一个简单的实例,如有帮助,欢迎点赞关注收藏!