使用C#更新JobDataMap并不像Quartz .Net中预期的那样工作

时间:2015-11-09 14:34:07

标签: c# quartz-scheduler quartz.net

当我尝试暂停工作时,我想更新它的数据映射,以便"暂停" 状态可以保存在那里。我的代码如下:

public void Pause(JobKey key)
{
    var job = Scheduler.GetJobDetail(key);
    if(job == null) return;

    job.JobDataMap.Put("Status", "Paused");
    Scheduler.PauseJob(job.Key);
}

作业按预期暂停,但其状态未更新,我无法理解原因。可能是什么原因?是否有其他方法可以更新JobDatamap返回的作业的Scheduler.GetJobDetail(key)

1 个答案:

答案 0 :(得分:0)

正如我已经想到的那样:Quartz只有在执行后才更新作业数据图。因此,要解决此问题,我必须重新添加作业到调度程序:

var job = Scheduler.GetJobDetail(key);
if(job == null) return;

job.JobDataMap.Put("Status", "Paused");
Scheduler.AddJob(job, true);
Scheduler.PauseJob(job.Key);

Scheduler.AddJob(job, true);行指示Quartz用更新的作业替换存储的作业。