using Quartz; using System; using System.Diagnostics; using WIDESEA_Common.Tools; 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}】{Environment.NewLine}"; //耗时 double taskSeconds = 0; try { stopwatch.Start(); func();//执行任务 stopwatch.Stop(); jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行成功】{Environment.NewLine}"; } catch (Exception ex) { JobExecutionException e2 = new JobExecutionException(ex); //true 是立即重新执行任务 e2.RefireImmediately = true; jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】{Environment.NewLine}"; } finally { taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3); jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行结束】(耗时:{taskSeconds}秒){Environment.NewLine}{Environment.NewLine}{Environment.NewLine}"; WriteLog.GetLog().Write(jobHistory, jobid + "执行记录"); } 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 = $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行开始】【Id:{jobid},组别:{groupName}】{Environment.NewLine}"; //耗时 double taskSeconds = 0; try { stopwatch.Start(); action(context);//执行任务 stopwatch.Stop(); jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行成功】{Environment.NewLine}"; } catch (Exception ex) { jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】{Environment.NewLine}"; } finally { taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3); jobHistory += $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行结束】(耗时:{taskSeconds}秒){Environment.NewLine}{Environment.NewLine}{Environment.NewLine}"; WriteLog.GetLog().Write(jobHistory, jobid + "执行记录"); } } } }