C#mvc使用Quartz定时调用某程序
首先说下我的需求:在MVC项目启动时定时执行项目中编写好的接口,半个小时执行一次
1 首先需要在项目中引用Quartz.dll
2 找到全局程序类Global.asax程序的开始启动(Application_Start)中写调度任务(我是把调度任务放到了SynChronize_JL类中
3重点来了Quartz任务调度的编写(如果想了解Quartz可参考https://www.cnblogs.com/wangjiming/p/10027439.html)
大致:先获取一个任务调度IScheduler ---->创建一个工作IJobDetail--->设置触发器ITrigger最后注入调度器IScheduler.ScheduleJob
具体:
public class SynChronize_JL
{
public static async void SynChronizeStart()
{
//获取调度器
IScheduler scheduler =await StdSchedulerFactory.GetDefaultScheduler();
//创建job WithIdentity(任务名称,任务分组)
IJobDetail job = JobBuilder.Create<SynChronize_JLModel>().WithIdentity("JLjob", "JLgroup").Build();
//创建触发器
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("JLjob", "JLgroup")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(30) //半个小时执行一次
.RepeatForever()).Build();//不间断重复执行
//注入到计划调度
await scheduler.ScheduleJob(job, trigger);
await scheduler.Start();
}
}
4 工作中的SynChronize_JLModel类必须时间IJob接口下的Execute方法
5 在多说一下关于触发器上面用的是简单触发WithSimpleSchedule就是可以重复执行的,还可以使用复杂触发WithCronSchedule
改成复杂触发方式
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("JLjob", "JLgroup")
.WithCronSchedule("0 0 3 * * ?").Build();//每天凌晨3点执行
具体可根据官方下图,编写适合自己的定时时间