我需要将参数传递给Quartz.NET中的作业。我发现最好的方法是使用UsingJobData()
方法。所以我试过但是我遇到了一些麻烦。
这是我想传递给作业的对象的类:
public class MyJobPlan
{
public String Name { get; set; }
public Guid JobId { get; set; }
public Int32 EveryXSecond { get; set; }
public List<JobExecutionParameterDTO> JobParameters { get; set; }
}
根据建议我将它分配给JobDataMap
变量:
JobDataMap jobDataMap = new JobDataMap {{"DailySample", currentJob}};
作为最后一步,我只需将其添加到创建工作中:
IJobDetail IJ1 = JobBuilder.Create<RefreshJobsToExecuteListJob>()
.WithIdentity($"IJ_{ currentJob.Name }", "InternalJobs")
.UsingJobData(jobDataMap)
.Build();
问题是在context
的Execute
方法的参数RefreshJobsToExecuteListJob
运行时,JobDataMap
是空的。
我不熟悉UseJobData,但我成功使用了SetJobData方法。另外,我知道Quartz应该能够自己序列化对象,但我继续自行序列化我作为JobDataMap属性添加的所有东西。
JobDataMap data = new JobDataMap();
var jobDetail = jobBuilder
.WithIdentity(JobName)
.WithDescription(JobSettings.JobDescription)
.SetJobData(data)
.Build();