public static IEnumerable <DateTime> GetNextFiringTimes(this ITrigger trigger, DateTimeOffset?after = null, DateTimeOffset?before = null) { var temp = trigger.Clone(); after = after ?? DateTimeOffset.Now; var next = temp.GetFireTimeAfter(after); before = before ?? next.Value.AddYears(1); while (next.HasValue && next.Value < before) { var dt = next.Value.LocalDateTime; yield return(dt); next = temp.GetFireTimeAfter(next.Value); } }
public void ResumeJobs(IEnumerable <string> jobIdList) { using (ILoggingOperation log = _logger.NormalOperation()) { log.Wrap(() => { List <JobDetail> result = new List <JobDetail>(); foreach (JobKey item in Global.Scheduler.GetJobKeys(GroupMatcher <JobKey> .GroupEquals(ServiceConstants.JobGroupName)) .Where(p => jobIdList.Contains(p.Name)) ) { using (ILoggingOperation tmpLog = log.NormalOperation() .AddProperty("jobId", item.Name)) { tmpLog.SinkWrap(() => { ITrigger trigger = Global.Scheduler.GetTriggersOfJob(item).First(p => p.Key.Group == ServiceConstants.TriggerGroupName && Global.Scheduler.GetTriggerState(p.Key) == TriggerState.Paused); Global.Scheduler.RescheduleJob(trigger.Key, (ITrigger)trigger.Clone()); //Global.Scheduler.ResumeJob(item); }); } } }); } }