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}】"); } }
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 ); })); }