Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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.");
            }
        }