将参数传递给作业

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

我需要将参数传递给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();

问题是在contextExecute方法的参数RefreshJobsToExecuteListJob运行时,JobDataMap是空的。

enter image description here

c# quartz.net
1个回答
0
投票

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

                JobDataMap data = new JobDataMap();

                var jobDetail = jobBuilder
                    .WithIdentity(JobName)
                    .WithDescription(JobSettings.JobDescription)
                    .SetJobData(data)
                    .Build();
© www.soinside.com 2019 - 2024. All rights reserved.