using Quartz; using System.Diagnostics; using WIDESEA_Comm.LogInfo; namespace WIDESEA_WCS.Jobs { public class JobBase { /// /// 执行指定任务 /// /// /// public string ExecuteJob(IJobExecutionContext context, Func func) { //记录Job时间 Stopwatch stopwatch = new Stopwatch(); //JOBID string jobid = context.JobDetail.Key.Name; //JOB组名 string groupName = context.JobDetail.Key.Group; //日志 string jobHistory = $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行开始】【Id:{jobid},组别:{groupName}】"; //耗时 double taskSeconds = 0; try { stopwatch.Start(); func();//执行任务 stopwatch.Stop(); jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行成功】"; } catch (Exception ex) { JobExecutionException e2 = new JobExecutionException(ex); //true 是立即重新执行任务 e2.RefireImmediately = true; jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】"; } finally { taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3); jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行结束】(耗时:{taskSeconds}秒)"; } return jobHistory; } public void ExecuteJob(IJobExecutionContext context, Action action) { //记录Job时间 Stopwatch stopwatch = new Stopwatch(); //JOBID string jobid = context.JobDetail.Key.Name; //JOB组名 string groupName = context.JobDetail.Key.Group; //日志 string jobHistory = $"【组别:{groupName}】"; //耗时 double taskSeconds = 0; try { stopwatch.Start(); action(context);//执行任务 stopwatch.Stop(); jobHistory += $",【执行成功】"; } catch (Exception ex) { jobHistory += $",【执行失败:{ex.Message}】+"; } finally { taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3); jobHistory += $"(耗时:{taskSeconds}秒)"; if (taskSeconds > 1 || jobHistory.Contains("执行失败")) WriteLog.Info(jobid + "执行记录").Write(jobHistory, jobid + "执行记录"); } } } }