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