private void ScheduleJob(ISwJob job) { var groupToResume = _scheduler.GetJobGroupNames(); foreach (var group in groupToResume) { var groupMatcher = GroupMatcher <JobKey> .GroupContains(group); var jobKeys = _scheduler.GetJobKeys(groupMatcher); foreach (var jobKey in jobKeys) { var detail = _scheduler.GetJobDetail(jobKey); if (detail.JobType != job.GetType()) { continue; } var triggers = _scheduler.GetTriggersOfJob(jobKey); foreach (ITrigger triggerResume in triggers) { if (_scheduler.GetTriggerState(triggerResume.Key) != TriggerState.Paused) { continue; } _scheduler.ResumeTrigger(triggerResume.Key); _scheduler.ResumeJob(detail.Key); } } } }
private void ChangeCron(ISwJob job, string cronExpression) { var groupToChangeCron = _scheduler.GetJobGroupNames(); foreach (var group in groupToChangeCron) { var groupMatcher = GroupMatcher <JobKey> .GroupContains(@group); var jobKeys = _scheduler.GetJobKeys(groupMatcher); foreach (var jobKey in jobKeys) { var detail = _scheduler.GetJobDetail(jobKey); if (detail.JobType != job.GetType()) { continue; } var triggers = _scheduler.GetTriggersOfJob(jobKey); foreach (ITrigger triggerResume in triggers) { var trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(job.Name() + "Trigger", GroupName) .WithCronSchedule(cronExpression) .Build(); var currentState = _scheduler.GetTriggerState(triggerResume.Key); _scheduler.RescheduleJob(triggerResume.Key, trigger); if (currentState != TriggerState.Paused) { continue; } _scheduler.PauseTrigger(trigger.Key); _scheduler.PauseJob(detail.Key); } } } }