protected void SetMainStatus(AgentTaskResult result, TimeSpan actualInterval) { var unitTestResult = new SendUnitTestResultData() { ActualInterval = actualInterval, Message = result.Message, Result = result.Status }; MainUnitTest.SendResult(unitTestResult); }
protected void DoWrapper() { MainUnitTest = _componentControl.GetOrCreateUnitTestControl("Main"); Logger.Debug("Запуск рабочего потока задачи"); try { while (true) { try { if (IsTaskComponentEnabled()) { ExecuteTask(); } var nextRunDate = DateTime.Now.Add(ExecutionPeriod); while (DateTime.Now < nextRunDate) { CancellationToken.ThrowIfCancellationRequested(); Thread.Sleep(1000); } } catch (OperationCanceledException) { break; } catch (ThreadAbortException) { break; } catch (Exception exception) { Logger.Error(exception); // Выполнено с проблемами - до следующего запуска задача агента будет жёлтой var result = new AgentTaskResult(UnitTestResult.Warning, exception.Message); SetMainStatus(result, ExecutionPeriod + _maximumOfflineInterval); var waitForTime = DateTime.Now + WaitOnErrorTime; while (DateTime.Now < waitForTime) { CancellationToken.ThrowIfCancellationRequested(); Thread.Sleep(1000); } } } } catch (OperationCanceledException) { } catch (ThreadAbortException) { } Logger.Debug("Рабочий поток задачи остановлен"); }