我希望我的应用程序阻止在我的Windows服务上添加相同的作业。这意味着如果存在工作密钥,我想向用户发出警告。我正在使用我的调度程序CheckExists()
方法:
IScheduler sched = scheduler.GetScheduler();
IJobDetail postbagjob = JobBuilder.Create<PostbagJob>()
.WithIdentity(jobName, jobGroup)
.UsingJobData("CampaignId", campaignId.ToString())
.UsingJobData("CampaignType", campaignType)
.Build();
ITrigger postbagJobTrigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity(triggerName, triggerGroup)
.WithCronSchedule(cron)
.StartAt(DateTime.Now)
.Build();
if (sched.CheckExists(postbagjob.Key))
{
MsgBox.Show("Job already exists!");
}
else
{
MsgBox.Show("It's ok. You can schedule this job.");
}
问题是此函数接收JobKey
作为参数。由此我认为应该已经创建了这份工作。所以上面的代码会给出一个例外。有没有办法在创建工作之前检查特定的JobKey
是否存在?
我知道这样做的方法是遍历所有工作。但是没有它我们可以做到吗?
答案 0 :(得分:13)
您无需创建作业即可创建JobKey
。 JobKey
包含公共构造函数和公共工厂方法。
var jobKey = new JobKey(jobName, jobGroup);
if (sched.CheckExists(jobKey)) //...