1.Quartz框架核心概念
Quartz对任务调度进行了高度抽象,提出了3个核心概念,并在org.quartz包中通过接口和类进行了描述
任务:就是执行的工作内容。Quartz提供Job接口来支持任务定义
触发器:定义触发Job执行的时间触发规则。Quartz提供Trigger类及其子类支持触发器功能,
调度器:Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行
2.Quartz框架的使用流程
a.NuGet引入资源包
b.创建任务类,并继承IJob接口,并实现Execute方法
c.创建调度器工厂 //ISchedulerFactory factory = new StdSchedulerFactory();
d.创建调度器 //IScheduler scheduler = await factory.GetScheduler();
e.创建一个任务 //IJobDetail job = JobBuilder.Create<JobInfo>().WithIdentity("myJob1", "group1").Build();
f.创建一个触发器
g.将任务和触发器添加到调度器里
h.开始执行
class Program { static void Main(string[] args) { TestJob(); Console.ReadKey(); } static async Task TestJob() { //创建调度器工厂 ISchedulerFactory factory = new StdSchedulerFactory(); //创建调度器 IScheduler scheduler = await factory.GetScheduler(); //创建一个任务 IJobDetail job = JobBuilder.Create<JobInfo>().WithIdentity("myJob1", "group1").Build(); //创建一个触发器 ITrigger trigger = TriggerBuilder.Create().WithIdentity("myTrigger1", "group1").StartNow(). WithSimpleSchedule(a => a.WithIntervalInSeconds(1).RepeatForever()).Build(); //将任务和触发器添加到调度器里 await scheduler.ScheduleJob(job, trigger); //开始执行 await scheduler.Start(); } }
public class JobInfo : IJob { public Task Execute(IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //throw new NotImplementedException(); return Task.FromResult(true); } }