我需要将参数传递到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
的{{1}}方法的Execute
方法的参数RefreshJobsToExecuteListJob
中的JobDataMap
为空。
答案 0 :(得分:0)
我对UseJobData不熟悉,但是我成功使用了SetJobData方法。另外,我知道Quartz应该能够自行序列化对象,但是我继续将自己添加为JobDataMap属性的所有内容序列化。
JobDataMap data = new JobDataMap();
var jobDetail = jobBuilder
.WithIdentity(JobName)
.WithDescription(JobSettings.JobDescription)
.SetJobData(data)
.Build();