using Infrastructure; using NLog; using Quartz; using System; using System.Diagnostics; using System.Threading.Tasks; using ARW.Model.System; using ARW.Service.System.IService; using Microsoft.Extensions.DependencyInjection; using Google.Protobuf.Reflection; using Microsoft.AspNetCore.Builder; namespace ARW.Tasks { public class JobBase { /// /// 日志接口 /// private static readonly Logger logger = LogManager.GetCurrentClassLogger(); /// /// 执行指定任务 /// /// 作业上下文 /// 业务逻辑方法 public async Task ExecuteJob(IJobExecutionContext context, Func job,string msg) { double elapsed = 0; int status = 0; string logMsg; try { //var s = context.Trigger.Key.Name; //记录Job时间 Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); //执行任务 await job(); stopwatch.Stop(); elapsed = stopwatch.Elapsed.TotalMilliseconds; logMsg = msg; } catch (Exception ex) { JobExecutionException e2 = new(ex) { //true 是立即重新执行任务 RefireImmediately = true }; status = 1; logMsg = $"Fail,Exception:{ex.Message}"; } var logModel = new SysTasksLog() { Elapsed = elapsed, Status = status.ToString(), JobMessage = logMsg }; //await RecordTaskLog(context, logModel); return logModel; } } }