public void Execute(IJobExecutionContext context) { lock (Slocker) { if (_isRunning) { return; } _isRunning = true; _isRestarting = true; } string jobName = ""; try { jobName = GetType().Name; #region 延时重启 Random random = new Random(); //每次休眠时间 const int sleepInterval = 100; int totalSleepMs = random.Next(11000, 19000); //i<1000是为了避免循环次数过大 for (int i = 0; i *sleepInterval < totalSleepMs && i < 1000; i++) { try { Thread.Sleep(sleepInterval); } catch { // ignored } } #endregion //重启 RestartHelper.Restart(failAction: failReason => { NLogHelper.Error($"自动重启失败:{failReason?.Description},exception={failReason?.Exception}"); }, successAction: () => { //成功处理 // TODO NLogHelper.Warn($"自动重启成功"); }, logAction: str => { NLogHelper.Warn($"自动重启日志:{str}"); }); } catch (Exception e) { NLogHelper.Error($"执行任务{jobName}失败:{e}"); } finally { lock (Slocker) { _isRunning = false; _isRestarting = false; } } }