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(); }
public void AddNewTasks(IEnumerable <TaskModel> tasks) { var schedulerTasks = tasks.Select(GetSchedulerTask).ToList(); ReadyTasks.AddRange(schedulerTasks); }