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

问题描述 投票:0回答:1

当我尝试暂停我的工作时,我想更新它的数据映射,因此“ Paused”状态可以保存在此处。我的代码如下:

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)吗?

c# quartz.net
1个回答
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用更新的作业替换存储的作业。

© www.soinside.com 2019 - 2024. All rights reserved.