コード例 #1
0
        // 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();
        }
コード例 #2
0
        // 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();
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
        // 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);
                }
            }
        }