void Execute(string threadName,out bool executed) { // ILog log = MO.Core.ServiceLogManager.GetLogger(threadName); executed = false; try { SystemProcessThread systemProcessThread = _OnGetSystemProcessThread(threadName); if(systemProcessThread.Continuous && systemProcessThread.Enabled==false) { if(systemProcessThread.ScheduledTime.HasValue) { TimeSpan duration=DateTime.UtcNow-DateTime.UtcNow.Date; if(duration.TotalSeconds>= systemProcessThread.ScheduledTime.Value.TotalSeconds && duration.TotalSeconds<=systemProcessThread.ScheduledTime.Value.TotalSeconds+systemProcessThread.SleepTime) { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } else { if(systemProcessThread.LastSuccessfullyExecuted.HasValue) { TimeSpan duration = DateTime.UtcNow - systemProcessThread.LastSuccessfullyExecuted.Value; if(duration.TotalSeconds>=systemProcessThread.ContinuousDelay) { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } else { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } } if (systemProcessThread.Enabled) { try { thread_OnReportEngineState(threadName, GenericServiceThread.EngineStatusList.Running); ISystemProcessThread systemProcess=null; if (systemProcessThread.SpringEntryName == "PerformanceStatisticThread") systemProcess = new PerformanceStatisticThread(); else if (systemProcessThread.SpringEntryName == "DeleteDataThread") systemProcess = new DeleteDataThread(); else systemProcess = IoC.Resolve<ISystemProcessThread>(systemProcessThread.SpringEntryName); systemProcess.ThreadName = threadName; systemProcess.LastSuccessfullyExecuted = systemProcessThread.LastSuccessfullyExecuted; systemProcess.ScheduledTime = systemProcessThread.ScheduledTime; systemProcess.StartRange = systemProcessThread.StartRange; systemProcess.EndRange = systemProcessThread.EndRange; executed = true; try { DateTime dt = DateTime.UtcNow; string message = systemProcess.Execute(systemProcessThread.Argument); TimeSpan executionTime = DateTime.UtcNow.Subtract(dt); systemProcessThread = _OnGetSystemProcessThread(threadName); systemProcessThread.LastSuccessfullyExecuted = DateTime.UtcNow; systemProcessThread.Status = GenericServiceThread.EngineStatusList.Sleeping.ToString(); systemProcessThread.Message = message; systemProcessThread.ExecutionTime = executionTime.TotalMilliseconds; // log.Info(string.Format("{0} Worker Thread Completed", threadName)); StopThread(systemProcessThread); } catch(SqlException ex) { if(ex.Number==1205 || ex.Number==-2) { } else { StopThread(systemProcessThread); throw ex; } } catch (Exception ex) { StopThread(systemProcessThread); throw ex; } } catch (Exception ex) { systemProcessThread.Status = GenericServiceThread.EngineStatusList.Exception.ToString(); systemProcessThread.Message = string.Format("{0} at {1}", ex.Message, DateTime.UtcNow.ToISOString()); StopThread(systemProcessThread); throw ex; } } } catch (Exception ex) { LogException(ex); throw ex; } }
void Execute(string threadName, out bool executed) { // ILog log = MO.Core.ServiceLogManager.GetLogger(threadName); executed = false; try { SystemProcessThread systemProcessThread = _OnGetSystemProcessThread(threadName); if (systemProcessThread.Continuous && systemProcessThread.Enabled == false) { if (systemProcessThread.ScheduledTime.HasValue) { TimeSpan duration = DateTime.UtcNow - DateTime.UtcNow.Date; if (duration.TotalSeconds >= systemProcessThread.ScheduledTime.Value.TotalSeconds && duration.TotalSeconds <= systemProcessThread.ScheduledTime.Value.TotalSeconds + systemProcessThread.SleepTime) { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } else { if (systemProcessThread.LastSuccessfullyExecuted.HasValue) { TimeSpan duration = DateTime.UtcNow - systemProcessThread.LastSuccessfullyExecuted.Value; if (duration.TotalSeconds >= systemProcessThread.ContinuousDelay) { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } else { systemProcessThread.Enabled = true; systemProcessThread = _OnUpdateSystemProcess(systemProcessThread); } } } if (systemProcessThread.Enabled) { try { thread_OnReportEngineState(threadName, GenericServiceThread.EngineStatusList.Running); ISystemProcessThread systemProcess = null; if (systemProcessThread.SpringEntryName == "PerformanceStatisticThread") { systemProcess = new PerformanceStatisticThread(); } else if (systemProcessThread.SpringEntryName == "DeleteDataThread") { systemProcess = new DeleteDataThread(); } else { systemProcess = IoC.Resolve <ISystemProcessThread>(systemProcessThread.SpringEntryName); } systemProcess.ThreadName = threadName; systemProcess.LastSuccessfullyExecuted = systemProcessThread.LastSuccessfullyExecuted; systemProcess.ScheduledTime = systemProcessThread.ScheduledTime; systemProcess.StartRange = systemProcessThread.StartRange; systemProcess.EndRange = systemProcessThread.EndRange; executed = true; try { DateTime dt = DateTime.UtcNow; string message = systemProcess.Execute(systemProcessThread.Argument); TimeSpan executionTime = DateTime.UtcNow.Subtract(dt); systemProcessThread = _OnGetSystemProcessThread(threadName); systemProcessThread.LastSuccessfullyExecuted = DateTime.UtcNow; systemProcessThread.Status = GenericServiceThread.EngineStatusList.Sleeping.ToString(); systemProcessThread.Message = message; systemProcessThread.ExecutionTime = executionTime.TotalMilliseconds; // log.Info(string.Format("{0} Worker Thread Completed", threadName)); StopThread(systemProcessThread); } catch (SqlException ex) { if (ex.Number == 1205 || ex.Number == -2) { } else { StopThread(systemProcessThread); throw ex; } } catch (Exception ex) { StopThread(systemProcessThread); throw ex; } } catch (Exception ex) { systemProcessThread.Status = GenericServiceThread.EngineStatusList.Exception.ToString(); systemProcessThread.Message = string.Format("{0} at {1}", ex.Message, DateTime.UtcNow.ToISOString()); StopThread(systemProcessThread); throw ex; } } } catch (Exception ex) { LogException(ex); throw ex; } }