如何将数组作为参数发送到 C# 中的 quartz 计划作业?

how to send an array as parameter to quartz scheduled job in C#?

我在 asp.net mvc 中使用 quartz.net 每 1 分钟执行一些预定作业, 通常你可以在这段代码中向你的工作发送一些参数我将两个字符串参数作为 key/value 发送到我的工作

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()

                       .UsingJobData("param1", "value1")
                       .UsingJobData("param2", "value2")
                       .Build();

我想发送一个字符串数组给预定的作业,而不是简单的字符串值,你有什么想法吗?或样本?

先谢谢你。

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

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

然后使用 string.Split() 方法拆分它。

您可以使用 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"];
    }