本文告诉大家如何在 dotnet core 的控制台通过 Hangfire 开启后台定时任务
首先需要安装 HangFire 这个 Nuget 库,通过这个库可以用来做定时任务,虽然很多时候都是在 ASP.NET Core 后台
默认后台任务需要数据库,用的数据库是 SqlServer 但是我觉得没有多少小伙伴想在自己的控制台项目直接使用 SQLServer 所以需要再安装 Hangfire.SQLite 通过本地文件 SQLite 做数据库
在开始使用之前,需要配置使用的数据库文件,通过下面的代码就可以使用当前工作文件夹的 CalelsairstirKislezootaima.db
作为 SQLite 数据文件
GlobalConfiguration.Configuration.UseSQLiteStorage("Data Source=./CalelsairstirKislezootaima.db;");
需要注意,在 UseSQLiteStorage
是可以传入配置的 name 和数据文件连接字符串,如果字符串的最后不是使用 ;
结束,那么将会被认为是一个 name 将会从配置里面尝试读取
在控制台开始后台任务需要先开启 BackgroundJobServer 这个类是可以被释放的,可以尝试这样写
using (new BackgroundJobServer())
{
}
开始一个不断执行的任务
using (new BackgroundJobServer())
{
var jobId = BackgroundJob.Enqueue(
() => Console.WriteLine("Fire-and-forget!"));
Console.Read();
}
为什么这里需要 Console.Read
因为如果退出了 BackgroundJobServer
那么后台任务就不在运行
开始一个一秒运行一次的任务
using (new BackgroundJobServer())
{
BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromSeconds(1));
Console.Read();
}
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/dotnet-%E6%8E%A7%E5%88%B6%E5%8F%B0-Hangfire-%E5%90%8E%E5%8F%B0%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。