任务调度

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

  

原文地址:https://www.cnblogs.com/JueXiaoQiang/p/10407251.html