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源码
一个简单的实例,如有帮助,欢迎点赞关注收藏!