// SUMMARY: Run task from demand (from signalR) public static void OnDemand(string key) { new System.Threading.Thread(() => { DeamonTaskData task = DeamonTaskData.GetTaskByKey(key); if (task == null) { SignalRConnector.SendMessage(string.Format("OnDemand:: Could not find task with key '{0}'", key)); return; } task.IsOnDemand = true; StartTask(task); }).Start(); }
// SUMMARY: Try to run task public static void StartTask(DeamonTaskData task) { string taskNamespace = task.Namespace; string className = string.Format("{0}.Task, {0}", taskNamespace); DeamonRefactor refactor = new DeamonRefactor(className); if (!refactor.Exists) { Console.WriteLine(DateTime.Now.ToString() + "Task with namespace DOES NOT EXISTS: " + taskNamespace); return; } new System.Threading.Thread(() => { SignalRConnector.SendMessage(DateTime.Now.ToString() + " Task started: " + taskNamespace); refactor.Instantiate(task); }).Start(); }
public TaskBase(DeamonTaskData taskData) { this._isOnDemand = taskData.IsOnDemand; this._deamonTask = Data.DeamonTask.CreateManager().Load(taskData.ID); if (this._deamonTask == null) { return; } this._deamonTask.IsRunning = true; this._deamonTask.Update(); this._deamonResult = new Data.DeamonTaskResult(-1, this._deamonTask, string.Empty, DateTime.Now, null, false, false, DateTime.Now, DateTime.Now); this._deamonResult.Insert(); try { this.Execute(); this._deamonResult.Data = this._textData; this._deamonResult.IsSuccessful = this._isProcessSuccessful; } catch (Exception e) { this.OnException(); this._deamonResult.IsSuccessful = false; this._deamonResult.Data = "EXCEPTION: " + e.Message.ToString(); this._deamonResult.HasFatal = true; } finally { this._deamonResult.Ended = DateTime.Now; this._deamonResult.Update(); this._deamonTask.IsRunning = false; if (!this._isOnDemand) { this._deamonTask.LastExecution = DateTime.Now; } this._deamonTask.Update(); } }
// SUMMARY: Find all suitable tasks and run them public static void Start() { MobilePaywallDirect database = MobilePaywallDirect.Instance; for (;;) { System.Threading.Thread.Sleep(1500); foreach (DeamonTaskData task in DeamonTaskData.GetCurrentData()) { if (!task.ShouldThisTaskBeExecuted) { continue; } StartTask(task); } } }