更新JobDataMap不';t在Quartz.Net中使用C#

更新JobDataMap不';t在Quartz.Net中使用C#,c#,quartz.net,C#,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); } 作业按预期暂停,但其状态未更新,我

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

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

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

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

正如我所了解的: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用更新的作业替换存储的作业