public void AddTask( string taskName, Action task, TimeSpan dueTime, TimeSpan period, TaskConcurrencyOptions taskConcurrencyOptions) { var scheduledTask = new ScheduledTask(taskName, task, taskConcurrencyOptions); var taskTimer = new Timer( RunTask, scheduledTask, Timeout.Infinite, Timeout.Infinite); if (!_tasksTimers.TryAdd(taskName, taskTimer)) { taskTimer.Dispose(); throw new Exception("Could not add task " + taskName + "."); } taskTimer.Change(dueTime, period); }
public ScheduledTask(string name, Action method, TaskConcurrencyOptions concurrencyOptions) { Name = name; Method = method; ConcurrencyOptions = concurrencyOptions; ConcurrencyLock = new object(); }
public void AddDailyTask(string taskName, Action task, Time time, TaskConcurrencyOptions taskConcurrencyOptions) { var timeToStart = (DateTime.Today.Add(time.ToTimeSpan())) - DateTime.Now; if (timeToStart.Ticks < 0) timeToStart = timeToStart.Add(TimeSpan.FromDays(1)); AddTask(taskName, task, timeToStart, TimeSpan.FromDays(1), taskConcurrencyOptions); }