
致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!
前言
在现代软件开发中,任务调度是构建高效、可靠系统的关键环节。今天为大家推荐一款斩获 9.9K+ GitHub 星星的 .NET 开源项目一个免费免费、功能强大且高度灵活的任务调度框架。它不仅支持丰富的调度策略,还具备良好的扩展性和易用性,适用于从简单定时任务到复杂分布式作业的各种场景,深受 .NET 开发者青睐。
项目介绍
Hangfire 是一个为 .NET 平台设计的开源(GPL-3.0 license)、免费、生产就绪的后台任务处理与调度框架。它允许开发者在 ASP.NET Core、ASP.NET MVC、控制台应用、Windows 服务等各类 .NET 应用中,以简单、可靠、可监控的方式执行后台任务(Background Jobs),无需依赖 Windows 任务计划程序或复杂的消息队列基础设施。
典型应用场景
|
|
|
|---|---|
| 异步邮件/短信发送 |
|
| 数据导入/导出 |
|
| 定时报表生成 |
|
| 缓存预热/清理 |
|
| 微服务间解耦任务 |
|
| Webhook 重试机制 |
|
项目特点
快速使用
NuGet 包安装
Install-Package Hangfire
Startup.cs 服务注入
using Owin;
using Hangfire;
public class Startup
{
public void Configuration(IAppBuilder app)
{
// 配置 Hangfire 使用 SQL Server 存储
GlobalConfiguration.Configuration
.UseSqlServerStorage("<your_connection_string_or_name>");
// 启动 Hangfire 后台处理服务器
app.UseHangfireServer();
// 启用 Hangfire Dashboard(注意:生产环境务必加授权!)
app.UseHangfireDashboard();
}
}
一次性任务
一次性任务仅执行一次,并在创建后几乎立即执行。
var jobId = BackgroundJob.Enqueue(
() => Console.WriteLine("Fire-and-forget!"));
延迟任务
延迟任务同样只执行一次,但不是立即执行,而是在特定的时间间隔后执行。
var jobId = BackgroundJob.Schedule(
() => Console.WriteLine("Delayed!"),
TimeSpan.FromDays(7));
周期任务
周期性任务按照指定的 CRON 计划多次触发。
RecurringJob.AddOrUpdate(
"myrecurringjob",
() => Console.WriteLine("Recurring!"),
Cron.Daily);
延续
延续在父任务完成后执行。
BackgroundJob.ContinueJobWith(
jobId,
() => Console.WriteLine("Continuation!"));
Job可视化管理
开源地址
https://github.com/HangfireIO/Hangfire




