Quartz.NET 是一个.NET 版的任务调度框架
Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业
例如:每天某个时间执行任务、或者每隔一个时间段执行某个任务等
1.定义要执行的任务:定义一个类,实现Quartz.IJob接口,实现方法Execute
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
namespace Quartz.NET
{
public class TimeJob : IJob
{
void IJob.Execute(IJobExecutionContext context)
{
//输出当前时间
Console.WriteLine(DateTime.Now+"");
}
}
}
2.创建一个调度器:调度器负责管理与控制任务的执行
//调度器
IScheduler scheduler;
//调度器工厂
ISchedulerFactory factory;
//1、创建一个调度器
factory = new StdSchedulerFactory();
scheduler = factory.GetScheduler();
scheduler.Start();
3.创建一个任务对象 任务对象就是我们将要执行的工作,job1是名称,group1是组名。
IJobDetail job = JobBuilder.Create<TimeJob>().WithIdentity("job1", "group1").Build();
4.创建触发器:触发器定义了什么时间任务开始或每隔多久执行一次。
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("0/5 * * * * ?") //5秒执行一次 括号内的内容是Cron时间表达式
//.StartAt(runTime)
.Build();
时间表达式生成工具:http://pan.baidu.com/s/1pL7Y2uf
5.将任务与触发器添加到调度器中并执行
//将任务与触发器添加到调度器中
scheduler.ScheduleJob(job, trigger);
//开始执行
scheduler.Start();
6.应用关闭时结束任务
if (scheduler != null)
{
scheduler.Shutdown(true);
}