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;
+ }
+
///
/// 记录到日志
///