Exemplo n.º 1
0
        /// <summary>
        /// Start All Tasks
        /// </summary>
        private void ConsumePendingScheduledTasks()
        {
            var StartedTicksIndex = new List <long>();

            foreach (KeyValuePair <long, List <ScheduledTask> > tasks in ScheduledTimers.Where(ent => ent.Key <= Ticks))
            {
                StartedTicksIndex.Add(tasks.Key);
                foreach (ScheduledTask taskEntry in tasks.Value)
                {
                    // scope copy for thread safety
                    var timerTask = taskEntry;
                    var task      = Task.Factory.StartNew(() => LaunchScheduledTask(timerTask));
                    RunningTimers.Add(new Tuple <long, Task>(Ticks, task));
                }
            }

            foreach (var key in StartedTicksIndex)
            {
                ScheduledTimers.Remove(key);
            }
        }