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.创建一个调度器  用于添加一组或多组的(任务与触发器)
scheduler.ScheduleJob(job, trigger);

  

 
5.开启或结束任务
  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     }

 

调用:
JobScheduler.Start();

  



后记:可视化界面和cron定时表达式尚未详细说明
  
posted @ 2019-06-30 15:56  y_w_k  阅读(1108)  评论(0编辑  收藏  举报