2

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

IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()

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

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

谢谢你。

4

2 回答 2

3

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

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

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

于 2016-01-04T09:03:38.540 回答
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"];
    }
于 2016-01-04T09:04:13.500 回答