示例#1
0
        public void AddTask(CronTimerTaskInfo taskInfo)
        {
            var job = BuildTask(taskInfo)
                      .Build();

            var trigger = BuildTrigger(taskInfo)
                          .WithCronSchedule(taskInfo.Cron)
                          .Build();

            _Scheduler.ScheduleJob(job, trigger);
        }
示例#2
0
        public IEnumerable <TimerTaskRunInfo> GetTaskRunInfo()
        {
            var group = _Scheduler.GetJobKeys(null);

            var result = group.Select(_Scheduler.GetJobDetail)
                         .Select(item =>
            {
                var runInfo = new TimerTaskRunInfo();

                var trigger = _Scheduler.GetTriggersOfJob(item.Key).FirstOrDefault();

                if (trigger is ISimpleTrigger)
                {
                    var simpleTaskInfo = new SimpleTimerTaskInfo();

                    simpleTaskInfo.RepeatCount    = ((ISimpleTrigger)trigger).RepeatCount;
                    simpleTaskInfo.RepeatInterval = (int)((ISimpleTrigger)trigger).RepeatInterval.TotalSeconds;
                    runInfo.FireTimes             = ((ISimpleTrigger)trigger).TimesTriggered;

                    runInfo.TaskInfo = simpleTaskInfo;
                }
                else if (trigger is ICronTrigger)
                {
                    var cronTaskInfo = new CronTimerTaskInfo();

                    cronTaskInfo.Cron = ((ICronTrigger)trigger).CronExpressionString;

                    runInfo.TaskInfo = cronTaskInfo;
                }

                if (trigger is ITrigger && runInfo.TaskInfo != null)
                {
                    var taskInfo = runInfo.TaskInfo;

                    taskInfo.Key       = item.Key.Name;
                    taskInfo.Group     = item.Key.Group;
                    taskInfo.Desc      = item.Description;
                    taskInfo.StartTime = trigger.StartTimeUtc.LocalDateTime;
                    taskInfo.EndTime   = trigger.EndTimeUtc?.LocalDateTime;

                    runInfo.FinalFireTime = trigger.GetPreviousFireTimeUtc()?.LocalDateTime;
                    runInfo.NextFireTime  = trigger.GetNextFireTimeUtc()?.LocalDateTime;
                }

                return(runInfo);
            })
                         .ToList();

            return(result);
        }
示例#3
0
 public void AddTask(CronTimerTaskInfo taskInfo)
 {
     _QuartzScheduler.AddTask(taskInfo);
 }