.NET之Hangfire快速入门和使用

风吹麦浪 2024-02-22 ⋅ 15 阅读

什么是Hangfire

Hangfire是使用C#编写的开源库,它可以让你在ASP.NET应用程序中非常方便地执行后台任务。这些任务可以是定时任务、队列任务、重试任务等等。Hangfire使用数据库持久化任务,非常适合在生产环境中使用。

安装Hangfire

安装Hangfire非常简单,只需要通过NuGet包管理器安装即可。在Visual Studio中打开你的项目,然后依次选择“工具” -> “NuGet包管理器” -> “管理解决方案的NuGet包”,搜索Hangfire并安装。

快速入门

配置Hangfire

在Global.asax.cs文件中,添加以下代码:

using Hangfire;
using Hangfire.SqlServer;

protected void Application_Start()
{
    GlobalConfiguration.Configuration
        .UseSqlServerStorage("<connection string>");

    // 其他配置代码...
}

在上述代码中,我们使用了SqlServer作为Hangfire的存储引擎,你也可以根据自己的需求选择其他存储引擎。

创建后台任务

下面是一个简单的例子,演示如何使用Hangfire创建一个后台任务:

public class MyJob
{
    public void Run()
    {
        Console.WriteLine("后台任务执行中...");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 初始化Hangfire
        Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string>");
        Hangfire.HangfireServer server = new HangfireServer();

        // 创建后台任务
        BackgroundJob.Enqueue(() => new MyJob().Run());

        Console.WriteLine("按任意键退出...");
        Console.ReadKey();

        // 停止Hangfire
        server.Dispose();
    }
}

上述代码创建了一个名为MyJob的类,其中包含了一个Run方法。BackgroundJob.Enqueue方法将MyJob.Run方法包装成一个后台任务,当调用Main方法时,后台任务将会被执行。

计划后台任务

除了直接执行后台任务,Hangfire还提供了一种称为"计划"的功能,可以在未来的某个时间点执行任务。 下面是一个使用计划任务的例子:

public class MyJob
{
    public void Run()
    {
        Console.WriteLine("后台任务执行中...");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 初始化Hangfire
        Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string>");
        Hangfire.HangfireServer server = new HangfireServer();

        // 创建计划任务,在2分钟后执行
        BackgroundJob.Schedule(() => new MyJob().Run(), TimeSpan.FromMinutes(2));

        Console.WriteLine("按任意键退出...");
        Console.ReadKey();

        // 停止Hangfire
        server.Dispose();
    }
}

上述代码将会在程序运行后的2分钟后执行MyJob.Run方法。

结语

Hangfire是一个非常强大的后台任务处理库,它简化了后台任务处理的复杂性,并提供了丰富的功能。本文介绍了Hangfire的基本概念和使用方法,希望对你理解和使用Hangfire有所帮助。

如果你对Hangfire感兴趣,可以查阅官方文档来深入了解更多关于Hangfire的内容。


全部评论: 0

    我有话说: