如何将数组作为参数发送到C#中的石英调度作业

本文关键字:调度作业 石英 数组 参数 | 更新日期: 2023-09-27 18:28:48

我在asp.net mvc中使用quartz.net来每隔1分钟执行一些调度作业,通常你可以在这个代码中向你的作业发送一些参数,我将两个字符串参数作为关键字/值发送到我的作业

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()
                       .UsingJobData("param1", "value1")
                       .UsingJobData("param2", "value2")
                       .Build();

我想向计划作业发送一个字符串数组,而不是简单的字符串值,你有什么想法吗?还是样品?

提前谢谢你。

如何将数组作为参数发送到C#中的石英调度作业

您可以使用JobDataMap。UsingJobData()具有JobDataMap的重载。你可以这样构建你的JobDataMap:

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>().Build();
SendMatchQuestionJob.JobDataMap["testArray"] = new string[]{"item1", "item2"};

稍后,您可以通过执行上下文从JobDataMap获取它:

public void Execute(JobExecutionContext context)
    {
      JobKey key = context.JobDetail.Key;
      JobDataMap dataMap = context.JobDetail.JobDataMap; 
      string[] testArray = (string[]) dataMap["testArray"];
    }

我没有看到UsingJobData()方法有任何有效的重载,所以可能一个可行的选择是传递一个带有分隔符的字符串,比如:

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()
                       .UsingJobData("params", "value1;value2;value3")
                       .Build();

然后用CCD_ 2方法进行分割。