Quartz.Net 入门
Quartz.Net用于定时执行某些任务,系统中的发送邮件,电商平台促销活动等。
实现方式,在window service中通过Quartz.net控制任务的执行和调度。
在Nuget中安装Quartz : Install-Package Quartz
以下记录主要实现代码:
1.创建定时执行的任务
定义一个类,实现IJob接口 新建UpdatecadJob.cs
1 public class UpdatecadJob : IJob 2 { 3 string LocalFilePath = ConfigurationManager.AppSettings["LocalFilePath"]; //CAD文件存储路径 4 public async Task Execute(IJobExecutionContext context) 5 { 6 try 7 { 8 await Task.Run(() => UpdatecadJobFun()); 9 } 10 catch (Exception ex) 11 { 12 LogHelper.WriteLogs("定时更新cad出错:" + ex.Message); 13 throw ex; 14 } 15 } 16 public void UpdatecadJobFun() 17 { 18 LogHelper.WriteLogs("这是定时任务:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 19 } 20 21 } 22
2.创建一个任务对象
用于对任务进行分组
job = Quartz.JobBuilder.Create<UpdatecadJob>().Build();
3.创建一个触发器
用于定义执行任务的间隔时间
1 trigger = TriggerBuilder.Create() 2 .WithIdentity("TimeTrigger", "TimeGroup") 3 .WithSimpleSchedule(t => t.WithIntervalInHours(1).RepeatForever()) 4 .Build(); 5
4.创建一个调度器 用于添加一组或多组的(任务与触发器)
1 | scheduler.ScheduleJob(job, trigger); |
5.开启或结束任务
1 | scheduler.Start(); |
完整代码如下:
新建JobScheduler类,通过构造函数初始化调度器工厂,通过start方法开启定时任务。
1 //后台执行任务 2 public class JobScheduler 3 { 4 //调度器工厂 5 private static readonly ISchedulerFactory factory = null; 6 //调度器 7 private static readonly IScheduler scheduler = null; 8 static JobScheduler() 9 { 10 11 //创建一个工厂 12 factory = new StdSchedulerFactory(); 13 scheduler = factory.GetScheduler().Result; 14 scheduler.Start(); 15 } 16 public static void Start() 17 { 18 scheduler.GetJobGroupNames(); 19 IJobDetail job; 20 ITrigger trigger; 21 //创建任务 22 job = Quartz.JobBuilder.Create<UpdatecadJob>().Build(); 23 //创建触发器 这里设置一小时 24 trigger = TriggerBuilder.Create() 25 .WithIdentity("TimeTrigger", "TimeGroup") 26 .WithSimpleSchedule(t => t.WithIntervalInHours(1).RepeatForever()) 27 .Build(); 28 //添加任务及触发器至调度器中 29 scheduler.ScheduleJob(job, trigger); 30 //启动 31 scheduler.Start(); 32 } 33 }
调用:
1 | JobScheduler.Start(); |
后记:可视化界面和cron定时表达式尚未详细说明
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· 推荐几个不错的 Linux 服务器管理工具
· C# 开发工具Visual Studio 介绍