From ff006f77f6267fc0d2c4ee810d897a85165f5b8f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 30 四月 2026 22:08:29 +0800
Subject: [PATCH] Merge branch 'xiaoyang' into dev

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
index 3b8288c..5c795e5 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
@@ -31,6 +31,7 @@
 using WIDESEAWCS_QuartzJob.DTO;
 using WIDESEAWCS_QuartzJob.CustomException;
 using Quartz.Impl.Matchers;
+using WIDESEAWCS_Core.LogHelper;
 
 namespace WIDESEAWCS_QuartzJob
 {
@@ -49,9 +50,10 @@
         public SchedulerCenterServer(IJobFactory jobFactory)
         {
             _iocjobFactory = jobFactory;
-            _scheduler = GetSchedulerAsync();
+            // 浣跨敤鍚屾涓婁笅鏂囪繍琛屽紓姝ユ柟娉�
+            _scheduler = Task.Run(async () => await GetSchedulerAsync()).GetAwaiter().GetResult();
         }
-        private IScheduler GetSchedulerAsync()
+        private async Task<IScheduler> GetSchedulerAsync()
         {
             if (_scheduler != null)
                 return this._scheduler;
@@ -66,7 +68,7 @@
                     };
                     //StdSchedulerFactory factory = new StdSchedulerFactory(collection);
                     StdSchedulerFactory factory = new StdSchedulerFactory();
-                    return _scheduler = factory.GetScheduler().Result;
+                    return _scheduler = await factory.GetScheduler();
                 }
                 catch (Exception ex)
                 {
@@ -84,7 +86,7 @@
             WebResponseContent result = new WebResponseContent();
             try
             {
-                if (_scheduler.IsShutdown && _scheduler.IsStarted)
+                if (_scheduler.IsShutdown || !_scheduler.IsStarted)
                 {
                     // 浠嶧actory涓幏鍙朣cheduler瀹炰緥
                     NameValueCollection collection = new NameValueCollection
@@ -93,7 +95,7 @@
                     };
                     //StdSchedulerFactory factory = new StdSchedulerFactory(collection);
                     StdSchedulerFactory factory = new StdSchedulerFactory();
-                    _scheduler = factory.GetScheduler().Result;
+                    _scheduler = await factory.GetScheduler();
                 }
 
                 this._scheduler.JobFactory = this._iocjobFactory;
@@ -102,13 +104,13 @@
                 {
                     //绛夊緟浠诲姟杩愯瀹屾垚
                     await this._scheduler.Start();
-                    await Console.Out.WriteLineAsync(QuartzJobInfoMessage.StartJobSuccess);
+                    QuartzLogger.Info(QuartzJobInfoMessage.StartJobSuccess);
                     result = WebResponseContent.Instance.OK(QuartzJobInfoMessage.StartJobSuccess);
                     return result;
                 }
                 else
                 {
-                    await _scheduler.Shutdown();
+                    // 璋冨害鍣ㄥ凡鍦ㄨ繍琛岋紝鐩存帴杩斿洖鎻愮ず
                     result = WebResponseContent.Instance.Error(QuartzJobInfoMessage.JobHasStart);
                     return result;
                 }
@@ -133,16 +135,13 @@
                     //绛夊緟浠诲姟杩愯瀹屾垚
                     await _scheduler.Shutdown(false);
 
-                    await Console.Out.WriteLineAsync(QuartzJobInfoMessage.StopJobSuccess);
+                    QuartzLogger.Info(QuartzJobInfoMessage.StopJobSuccess);
                     result = WebResponseContent.Instance.OK(QuartzJobInfoMessage.StopJobSuccess);
                     return result;
                 }
                 else
                 {
-                    IReadOnlyCollection<string> jobGroupNames = await _scheduler.GetJobGroupNames();
-
-                    await _scheduler.PauseAll();
-
+                    // 璋冨害鍣ㄥ凡鍋滄锛岀洿鎺ヨ繑鍥炴彁绀猴紙涓嶅啀瀵瑰凡 shutdown 鐨� scheduler 璋冪敤 PauseAll锛�
                     result = WebResponseContent.Instance.Error(QuartzJobInfoMessage.JobHasStop);
                     return result;
                 }
@@ -167,7 +166,7 @@
             {
                 try
                 {
-                    if (_scheduler.IsShutdown && _scheduler.IsStarted)
+                    if (_scheduler.IsShutdown || !_scheduler.IsStarted)
                     {
                         // 浠嶧actory涓幏鍙朣cheduler瀹炰緥
                         NameValueCollection collection = new NameValueCollection
@@ -176,7 +175,7 @@
                         };
                         //StdSchedulerFactory factory = new StdSchedulerFactory(collection);
                         StdSchedulerFactory factory = new StdSchedulerFactory();
-                        _scheduler = factory.GetScheduler().Result;
+                        _scheduler = await factory.GetScheduler();
                     }
 
 
@@ -460,11 +459,14 @@
         /// <returns></returns>
         private ITrigger CreateSimpleTrigger(DispatchInfoDTO sysSchedule)
         {
+            // Quartz瑕佹眰闂撮殧鑷冲皯1绉掞紝闃叉鏁版嵁搴撲腑IntervalSecond涓�0鎴栬礋鍊煎鑷碅rgumentOutOfRangeException
+            var intervalSeconds = sysSchedule.IntervalSecond <= 0 ? 1 : sysSchedule.IntervalSecond;
+
             ITrigger trigger = TriggerBuilder.Create()
             .WithIdentity(sysSchedule.Id.ToString(), sysSchedule.JobGroup)
             .StartAt(sysSchedule.BeginTime.GetValueOrDefault())
             .WithSimpleSchedule(x => x
-                .WithIntervalInSeconds(sysSchedule.IntervalSecond)
+                .WithIntervalInSeconds(intervalSeconds)
                 .RepeatForever()
             )
             .EndAt(sysSchedule.EndTime.GetValueOrDefault())

--
Gitblit v1.9.3