Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大
Quartz.NET:是把Quartz转成C# NuGet中可以直接下载对应类库
官网:https://www.quartz-scheduler.net/
主要对象:
- Job :工作,要执行的具体内容继承IJob。此接口中只有一个方法:execute(IJobExecutionContext context)
- JobDetail:具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容
- Trigger:调度参数的配置,什么时候去调 执行间隔。
- Scheduler:调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。
大体介绍:
static void Main(string[] args)
{
Task<IScheduler> task_scheduler = StdSchedulerFactory.GetDefaultScheduler();
IScheduler scheduler = task_scheduler.Result;
//ISchedulerFactory _SchedulerFactory = new StdSchedulerFactory();
//IScheduler scheduler = _SchedulerFactory.GetScheduler().Result;
/*
* 过程:
* 一.通过StdSchedulerFactory计划工厂对象创建调度计划Scheduler
* 二.创建Job对象,需要继承IJob 实现执行方法
* 三.触发对象,2种:间隔执行和定时执行
* 1.ITrigger:间隔执行
* 2.ICronTrigger:定时执行
* 四.将job对象和触发对象传入调度计划Scheduler 开始执行
*
*
*/
//job创建
IJobDetail job = JobBuilder.Create<SayHello>().WithIdentity("定时确认完成订单").Build();
创建简单计时器
//ISimpleTrigger _SimpleTrigger = TriggerBuilder.Create()
// .WithSimpleSchedule(t => t //声明定时
// .WithIntervalInSeconds(2) //5秒一次
// .RepeatForever()) //永远执行
// .StartNow() //立即开始
// .Build() //创建
// as ISimpleTrigger;
关联job与计时器
//scheduler.ScheduleJob(job, _SimpleTrigger);
/*
* WithCronSchedule参数说明:
* 秒 分 时 某一天 月 周 年(可选参数,一般不用)
* 秒分的合法值为0-59,小时:0-23,日期(天):0-31[要注意不同的月份中的天数不同] 月:0-11[或JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC] 星期:1-7(1=星期日)或[SUN,MON,TUE,WED,THU,FRI,SAT]