将参数传递到作业中

时间:2019-03-01 10:22:19

标签: c# quartz.net

我需要将参数传递到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为空。

enter image description here

1 个答案:

答案 0 :(得分:0)

我对UseJobData不熟悉,但是我成功使用了SetJobData方法。另外,我知道Quartz应该能够自行序列化对象,但是我继续将自己添加为JobDataMap属性的所有内容序列化。

                JobDataMap data = new JobDataMap();

                var jobDetail = jobBuilder
                    .WithIdentity(JobName)
                    .WithDescription(JobSettings.JobDescription)
                    .SetJobData(data)
                    .Build();