From 9f6ee330ae8b755124a88a3085f1641e765a4ddf Mon Sep 17 00:00:00 2001 From: xbzhu <5430389+xbzhu@user.noreply.gitee.com> Date: Wed, 6 Dec 2023 04:01:55 +0000 Subject: [PATCH] =?UTF-8?q?update=20ZR.Tasks/TaskScheduler/JobBase.cs.=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=9E=84=E9=80=A0=E5=8F=91=E6=94=BE?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8=E6=89=A7=E8=A1=8C=E4=BB=BB=E5=8A=A1=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=8E=A5=E6=94=B6Job=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=EF=BC=8C=E5=B0=86=E7=BB=93=E6=9E=9C=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E4=B8=AD?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xbzhu <5430389+xbzhu@user.noreply.gitee.com> --- ZR.Tasks/TaskScheduler/JobBase.cs | 47 ++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/ZR.Tasks/TaskScheduler/JobBase.cs b/ZR.Tasks/TaskScheduler/JobBase.cs index 11c1001..01fd43f 100644 --- a/ZR.Tasks/TaskScheduler/JobBase.cs +++ b/ZR.Tasks/TaskScheduler/JobBase.cs @@ -1,4 +1,4 @@ -using Infrastructure; +using Infrastructure; using NLog; using Quartz; using System; @@ -62,6 +62,51 @@ namespace ZR.Tasks return logModel; } + /// + /// 执行指定任务(接收返回结果) + /// + /// 作业上下文 + /// 业务逻辑方法 + public async Task ExecuteJob(IJobExecutionContext context, Func> job) + { + double elapsed = 0; + int status = 0; + string logMsg; + try + { + //var s = context.Trigger.Key.Name; + //记录Job时间 + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + //执行任,并返回结果 + string result = await job(); + stopwatch.Stop(); + elapsed = stopwatch.Elapsed.TotalMilliseconds; + logMsg = result.Length <= 2000 ? result : result.Substring(0, 2000); + } + catch (Exception ex) + { + JobExecutionException e2 = new(ex) + { + //true 是立即重新执行任务 + RefireImmediately = true + }; + status = 1; + logMsg = $"Job Run Fail,Exception:{ex.Message}"; + WxNoticeHelper.SendMsg("任务执行出错", logMsg); + } + + var logModel = new SysTasksLog() + { + Elapsed = elapsed, + Status = status.ToString(), + JobMessage = logMsg + }; + + await RecordTaskLog(context, logModel); + return logModel; + } + /// /// 记录到日志 ///