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