最近因为项目需要用到了Quartz,下面简单记录一下。
一、首先需要安装Quartz。
二、定义一个执行的Job类,实现IJob接口,接口有一个方法Execute,用来执行定时任务的实现内容。
public class HelloJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
Console.WriteLine("作业执行!");
}
}
三、定时触发,根据设定的时间间隔触发。
//从工厂中获取一个调度器实例化
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await scheduler.Start(); //开启调度器 //==========例子1(简单使用)=========== IJobDetail job1 = JobBuilder.Create<HelloJob>() //创建一个作业
.WithIdentity("job", "group1")
.Build(); ITrigger trigger1 = TriggerBuilder.Create()
.WithIdentity("trigger", "group1")
.StartNow() //现在开始
.WithSimpleSchedule(x => x //触发时间,5秒一次。
.WithIntervalInSeconds(5)
.RepeatForever()) //不间断重复执行
.Build(); await scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。
四、仅触发一次,定时器在设定时间内,只触发一次。
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler(); IJobDetail job = JobBuilder.Create<HelloJob>() //创建一个作业
.WithIdentity("job3", "group3")
.Build(); ITrigger trigger = trigger = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger3", "group3")
.StartAt(DateBuilder.FutureDate(1, IntervalUnit.Second)) //使用DateBuilder将来创建一个时间日期
.ForJob(job) //通过JobKey识别作业
.Build(); await scheduler.ScheduleJob(job,trigger);
await scheduler.Start();