Пример #1
0
        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);
                            });
                        }
                    }
                });
            }
        }