/// <summary> /// Adds a task onto the schedule so it will be checked and run as defined by the schedule /// </summary> /// <param name="task">The task to run</param> /// <param name="schedule">The schedule that determines when the task should run</param> public bool TryAddTask(ITask task, Schedule schedule) { if (task == null) { throw new ArgumentNullException(nameof(task)); } if (schedule == null) { throw new ArgumentNullException(nameof(schedule)); } if (IsRunning) { return(false); } switch (schedule.Type) { case ScheduleType.Periodical: var p = new PeriodicalTaskRunner(task, schedule.Frequency); _taskRunners.Add(p); break; case ScheduleType.Scheduled: var s = new ScheduledTaskRunner(task, schedule.RunAt); _taskRunners.Add(s); break; case ScheduleType.Task: var neverRunner = new OnDemandTaskRunner(task); _taskRunners.Add(neverRunner); break; case ScheduleType.Defered: break; default: throw new Exception(schedule.Type + " is not a supported schedule type."); } return(true); }
/// <summary> /// Adds a task onto the schedule so it will be checked and run as defined by the schedule /// </summary> /// <param name="task">The task to run</param> /// <param name="schedule">The schedule that determines when the task should run</param> public void AddTask(ITask task, Schedule schedule) { switch (schedule.Type) { case ScheduleType.Periodical: var p = new PeriodicalTaskRunner(task, schedule.Frequency); _taskRunners.Add(p); break; case ScheduleType.Scheduled: var s = new ScheduledTaskRunner(task, schedule.RunAt); _taskRunners.Add(s); break; case ScheduleType.Task: _tasks.Add(task); break; default: throw new Exception(schedule.Type + " is not a supported schedule type."); } }