dis*_*kid 2 c# windows-services job-scheduling quartz.net
我希望我的应用程序阻止在我的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.");
}
Run Code Online (Sandbox Code Playgroud)
问题是这个函数接收一个JobKey
作为参数.由此我认为应该已经创建了这份工作.所以上面的代码会给出一个例外.有没有办法JobKey
在创建工作之前检查特定是否存在?
我知道这样做的一种方法是遍历所有工作.但是没有它我们能做到吗?
Raf*_*ski 14
您可以在JobKey
不创建作业的情况下创建.JobKey
有公共构造函数和公共工厂方法.
var jobKey = new JobKey(jobName, jobGroup);
if (sched.CheckExists(jobKey)) //...
Run Code Online (Sandbox Code Playgroud)