一、简单的Quartz程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Quartz; using Quartz.Impl; using Quartz.Listener; using Quartz.Impl.Matchers; using System.Threading; namespace ConsoleApp3 { class Program { static void Main(string[] args) { //scheduler [10 +1 都开启了,只不过都是等待状态] var scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; //[start 会让 调度线程 启动,从jobstore中获取快要执行的trigger,然后获取trigger关联的job进行执行。] scheduler.Start(); //job var job = JobBuilder.Create<JobTest>().Build(); //trigger var trigger = TriggerBuilder.Create().WithSimpleSchedule(x => x .WithIntervalInSeconds(1)//1s钟执行一次 .RepeatForever()//重复执行 .Build()).Build(); //添加监听 scheduler.ListenerManager.AddJobListener(new MyJobListener(), GroupMatcher<JobKey>.AnyGroup()); //开始调度 scheduler.ScheduleJob(job, trigger); Console.ReadLine(); } //面向AOP public class MyJobListener : IJobListener { public string Name => "test"; //job开始执行之前调用 public async Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken)) { Console.WriteLine("JobExecutionVetoed"); } //job每次执行之后调用 public async Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken)) { Console.WriteLine("JobToBeExecuted"); } //job执行结束之后调用 public async Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default(CancellationToken)) { Console.WriteLine("JobWasExecuted"); } } } public class JobTest : IJob { public async Task Execute(IJobExecutionContext context) { Console.WriteLine("asd"); } } }