/// <summary> /// Add or Re Schedule Task Object /// </summary> /// <param name="task">Scheduled Task Object to Add</param> /// <param name="delay">Delay before Scheduled Task is triggered</param> private void Start(ScheduledTask task, int delay) { var dueTime = Ticks + delay; PendingTimers.Add(new Tuple <long, ScheduledTask>(dueTime, task)); SignalNextDueTick(dueTime); }
/// <summary> /// Resolve Pending Timer to be Inserted in Scheduler /// </summary> private void ResolvePendingTimers() { while (!PendingTimers.IsEmpty) { Tuple <long, ScheduledTask> task; if (PendingTimers.TryTake(out task)) { List <ScheduledTask> scheduled; if (!ScheduledTimers.TryGetValue(task.Item1, out scheduled)) { scheduled = new List <ScheduledTask>(); ScheduledTimers.Add(task.Item1, scheduled); } scheduled.Add(task.Item2); } } }