使用 C# 在 Quartz .Net 中更新 JobDataMap 无法正常工作

Update JobDataMap doesn't work as expected in Quartz .Net with C#

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

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

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

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

据我所知: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 用更新的作业替换存储的作业。