Quartz.net动态修改任务执行周期
需求是根据配置项动态修改Quartz任务,找了很多资料都是Java的(例如https://blog.csdn.net/u010377605/article/details/77801896),和.net方法字段都不一样
目前我的代码大概是这样(参照了https://blog.csdn.net/qq_18145031/article/details/81382280)
CronTriggerImpl trigger = new CronTriggerImpl(triggerName, triggerGroupName);
JobDetailImpl jobDetail = new JobDetailImpl(jobDetailName, jobDetailGroupName, type);
//ITrigger trigger = (ITrigger)sched.GetTrigger(new TriggerKey(triggerName, triggerGroupName));
//IJobDetail jobDetail = (IJobDetail)sched.GetJobDetail(new JobKey(jobDetailName, jobDetailGroupName));
if (trigger != null)
{
CronTriggerImpl ct = (CronTriggerImpl)trigger;
// 移除当前进程的Job
bool flag= sched.DeleteJob(jobDetail.Key);
// 修改Trigger
ct.CronExpressionString = time;
Console.WriteLine("CronTrigger getName " + ct.JobName);
// 重新调度jobDetail
sched.ScheduleJob(jobDetail, ct);
}
运行结果是新启动了一个同名任务,而且周期也不是传入的Cron表达式那样,断点看了下移除任务返回的flag是false,应该是构造trigger 和jobDetail 没构造对,这是新增的写法,按需求应该是获取现有,但是找了很久也看了原文还是没找到,求助!(https://quartznet.sourceforge.io/apidoc/3.0/html/)