using Quartz; namespace IStation.ChEr.WebApi; /// /// 预测计划任务辅助类 /// public class PredictCronJobHelper : IJobHelper { private const string _jobName = "PredictCronJob"; private const string _jobGroup = "PredictCronJobGroup"; private const string _triggerName = "PredictCronJobTriggr"; private static IScheduler _sched;//调度器 /// /// 开始任务 /// public async Task StartJob() { if (_sched != null) return; // 1.创建scheduler的引用 var fac = new Quartz.Impl.StdSchedulerFactory(); _sched = await fac.GetScheduler(); //2.启动 scheduler await _sched.Start(); //3.创建任务 var job = JobBuilder.Create() .WithIdentity(_jobName, _jobGroup) .Build(); // 4.创建Trigger var trigger = TriggerBuilder.Create() .WithIdentity(_triggerName, _jobGroup) .WithCronSchedule("0 05 0/1 * * ? ")//"0 32 0/1 * * ? " .Build(); /* //4.创建Trigger var trigger = TriggerBuilder.Create() .WithIdentity(_triggerName, _jobGroup) .WithSimpleSchedule(x => x.WithIntervalInSeconds(10) .RepeatForever().WithMisfireHandlingInstructionNextWithRemainingCount()) .Build();*/ //5.加入调度管理器 await _sched.ScheduleJob(job, trigger); } /// /// 取消任务 /// public async Task CancelJob() { if (_sched == null) return; var triggerKey = new TriggerKey(_triggerName, _jobGroup); if (await _sched.CheckExists(triggerKey)) { await _sched.UnscheduleJob(triggerKey); } } }