检查作业是否存在,而不遍历所有作业
本文关键字:作业 遍历 是否 存在 检查 | 更新日期: 2023-09-27 18:27:28
我希望我的应用程序阻止在我的 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
?
我知道一种方法是遍历所有作业。但是,没有它,我们能做到吗?
您可以在
不创建作业的情况下创建JobKey
。 JobKey
同时具有公共构造函数和公共工厂方法。
var jobKey = new JobKey(jobName, jobGroup);
if (sched.CheckExists(jobKey)) //...