【问题标题】:how to send an array as parameter to quartz scheduled job in C#?如何将数组作为参数发送到 C# 中的石英计划作业?
【发布时间】:2016-01-04 08:31:40
【问题描述】:
我在 asp.net mvc 中使用quartz.net 每1分钟执行一些预定的作业,
通常你可以在这段代码中向你的工作发送一些参数我将两个字符串参数作为键/值发送到我的工作
IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()
.UsingJobData("param1", "value1")
.UsingJobData("param2", "value2")
.Build();
我想发送一个字符串数组而不是简单的字符串值,你知道吗?还是样品?
先谢谢你了。
【问题讨论】:
标签:
c#
asp.net
quartz-scheduler
quartz.net-2.0
【解决方案1】:
您可以使用 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"];
}
【解决方案2】:
我没有看到 UsingJobData() 方法的任何有效重载,所以也许一个可行的选择是传递一个带有分隔符的字符串,例如:
IJobDetail SendMatchQuestionJob = JobBuilder.Create<QuestionJob>()
.UsingJobData("params", "value1;value2;value3")
.Build();
然后使用string.Split() 方法将其拆分。