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定时表达式尚未详细说明
  
posted @   y_w_k  阅读(1121)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .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 介绍
点击右上角即可分享
微信分享提示