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);
}
}