2014-10-23 3 views
0

내 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이 존재하는지 확인하는 방법이 있습니까?

내가하는 일은 모든 작업을 반복하는 것입니다. 그러나 우리는 그것없이 그것을 할 수 있습니까?

답변

9

작업을 만들지 않고 JobKey을 만들 수 있습니다. JobKey에는 public 생성자 메서드와 public 팩터 리 메서드가 모두 있습니다.

var jobKey = new JobKey(jobName, jobGroup); 
if (sched.CheckExists(jobKey)) //... 
관련 문제