/// <summary>
        /// Handles expired tasks: Sends out a message that a particular task is expired, removes the task from the
        /// registered task collection and sends out a message that the task is deleted. This method gets called
        /// from the DoWork() method.
        /// </summary>
        /// <param name="task">Task to expire</param>
        private void ExpireTask(Task task)
        {
            Task tc = (Task)task.Clone();

            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.EXPIRED, tc);
            _settings.TaskCollection.Remove(task);
            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, tc);
            SaveChanges(false);
        }
 public void UpdateTask(Guid taskId, Task updatedTask)
 {
     lock (_syncObj)
     {
         updatedTask.ID = taskId;
         _settings.TaskCollection.Replace(taskId, updatedTask);
         SaveChanges(false);
         TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.CHANGED, updatedTask);
     }
 }
        /// <summary>
        /// Handles expired tasks: Sends out a message that a particular task is expired, removes the task from the
        /// registered task collection and sends out a message that the task is deleted. This method gets called
        /// from the DoWork() method.
        /// </summary>
        /// <param name="task">Task to expire</param>
        private void ExpireTask(Task task)
        {
            ServiceRegistration.Get <ILogger>().Debug("TaskScheduler: ExpireTask: {0}", task.ToString());
            Task tc = (Task)task.Clone();

            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.EXPIRED, tc);
            _settings.TaskCollection.Remove(task);
            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, tc);
            SaveChanges(false);
        }
 public void UpdateTask(Guid taskId, Task updatedTask)
 {
     lock (_syncObj)
     {
         updatedTask.ID = taskId;
         ServiceRegistration.Get <ILogger>().Debug("TaskScheduler: UpdateTask: {0}", updatedTask);
         _settings.TaskCollection.Replace(taskId, updatedTask);
         SaveChanges(false);
         TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.CHANGED, updatedTask);
     }
 }
        /// <summary>
        /// Handles processing of due tasks. Sends out a message that a task is due, updates the tasks properties and
        /// removes the task if it was scheduled to run only once. This method gets called from the DoWork() method.
        /// </summary>
        /// <param name="task">Task to process.</param>
        private void ProcessTask(Task task)
        {
            Task tc = (Task)task.Clone();

            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DUE, tc);
            task.LastRun = task.NextRun;
            if (task.Occurrence == Occurrence.Once)
            {
                _settings.TaskCollection.Remove(task);
                TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, tc);
            }
        }
        /// <summary>
        /// Handles processing of due tasks. Sends out a message that a task is due, updates the tasks properties and
        /// removes the task if it was scheduled to run only once. This method gets called from the DoWork() method.
        /// </summary>
        /// <param name="task">Task to process.</param>
        private void ProcessTask(Task task)
        {
            ServiceRegistration.Get <ILogger>().Debug("TaskScheduler: ProcessTask: {0}", task.ToString());
            Task tc = (Task)task.Clone();

            TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DUE, tc);
            task.LastRun = task.NextRun;
            if (task.Occurrence == Occurrence.Once)
            {
                _settings.TaskCollection.Remove(task);
                TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, tc);
            }
        }
 public void RemoveTask(Guid taskId)
 {
     lock (_syncObj)
     {
         Task task = GetTask(taskId);
         if (task == null)
         {
             return;
         }
         ServiceRegistration.Get <ILogger>().Debug("TaskScheduler: RemoveTask: {0}", task);
         _settings.TaskCollection.Remove(task);
         SaveChanges(false);
         TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, task);
     }
 }
 public void RemoveTask(Guid taskId)
 {
     lock (_syncObj)
     {
         Task task = null;
         foreach (Task t in _settings.TaskCollection.Tasks)
         {
             if (t.ID == taskId)
             {
                 task = t;
             }
         }
         if (task == null)
         {
             return;
         }
         _settings.TaskCollection.Remove(task);
         SaveChanges(false);
         TaskSchedulerMessaging.SendTaskSchedulerMessage(TaskSchedulerMessaging.MessageType.DELETED, task);
     }
 }