public override void Process(int currentTime)
        {
            if (ReadyTasks.Count == 0)
            {
                return;
            }

            var processingTime = 1 / (float)ReadyTasks.Count;

            while (ReadyTasks.Any())
            {
                TrySetCurrentTaskFromReadyTasks();
                ProcessCurrentTask(currentTime, processingTime);
            }

            //ReadyTasks queue is empty, we add tasks that are not finished in current iteration, for next iterations
            ReadyTasks.AddRange(_tasksNoFinishedInCurrentIteration);
            _tasksNoFinishedInCurrentIteration.Clear();
        }
示例#2
0
        public void AddNewTasks(IEnumerable <TaskModel> tasks)
        {
            var schedulerTasks = tasks.Select(GetSchedulerTask).ToList();

            ReadyTasks.AddRange(schedulerTasks);
        }