Ejemplo n.º 1
0
        public async Task Execute(IJobExecutionContext context)
        {
            var executeTime = DateTime.Now;

            ConsoleExtend.WriteLineDebug($"【{executeTime}】 开始执行作业 作业【{context.JobDetail.Key}】 触发器【{context.Trigger.Key}】");
            try
            {
                for (int i = 0; i < 5; i++)
                {
                    LockAction(() => ExecutedCount++);
                    await Task.Delay(TimeSpan.FromSeconds(10));

                    if (context.CancellationToken.IsCancellationRequested)
                    {
                        ConsoleExtend.WriteLineDebug1($"【{DateTime.Now}】 作业被打断 作业【{context.JobDetail.Key}】 触发器【{context.Trigger.Key}】 触发时间【{executeTime}】");
                        // 也可以抛出JobExecutionException异常
                        LockAction(() => InterruptlCount++);
                    }
                    else
                    {
                        LockAction(() => SuccessfulCount++);
                    }
                }
            }
            finally
            {
                ConsoleExtend.WriteLineDebug2($"【{DateTime.Now}】 作业执行完成 作业【{context.JobDetail.Key}】 触发器【{context.Trigger.Key}】 触发时间【{executeTime}】");
            }
        }
Ejemplo n.º 2
0
        public Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default(CancellationToken))
        {
            return(new TaskFactory().StartNew(() =>
            {
                ConsoleExtend.WriteLineDebug(@"监听器名称【{0}】 触发器【{1}=>{2}】触发完成 触发器描述【{3}】 作业【{4}=》{5}】 触发器参数【{6}】 
触发器日历名称【{7}】 最后执行时间【{8}】 下次执行时间【{9}】 作业执行时间【{10}】 触发的实际时间【{11}】 context中下次执行时间【{12}】"
                                             , Name
                                             , trigger.Key.Group
                                             , trigger.Key.Name
                                             , trigger.Description
                                             , trigger.JobKey.Group
                                             , trigger.JobKey.Name
                                             , Newtonsoft.Json.JsonConvert.SerializeObject(trigger.JobDataMap)
                                             , trigger.CalendarName
                                             , trigger.FinalFireTimeUtc.HasValue ? trigger.FinalFireTimeUtc.Value.LocalDateTime.ToString() : String.Empty //最终执行时间
                                             , trigger.GetFireTimeAfter(DateTimeOffset.Now).HasValue
                    ? trigger.GetFireTimeAfter(DateTimeOffset.Now).Value.LocalDateTime.ToString("yyyy-MM-dd HH:mm:ss") : String.Empty                     //下次执行时间
                                             , new DateTime(context.JobRunTime.Ticks)                                                                     //作业执行时间
                                             , context.FireTimeUtc.LocalDateTime
                                             , context.NextFireTimeUtc.HasValue ? context.NextFireTimeUtc.Value.LocalDateTime.ToString() : String.Empty
                                             );
            }));
        }