如何将数组作为参数发送到C#中的石英预定作业?

时间:2016-01-04 08:31:40

标签: c# asp.net quartz-scheduler quartz.net-2.0

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

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()

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

我想将一个字符串数组发送到预定的作业而不是简单的字符串值,你有任何想法吗?还是样品?

先谢谢你。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

之后只需使用string.Split()方法将其拆分。