private void AlimentarProcesamento() { Tarefas.OrderBy(t => t.TempoExecucao).ToList().ForEach(t => { FilaExecucao.Enqueue(t); ProcessosExecutados.Enqueue(new ProcessoExecutado(t, TempoAtualProcessamento)); TempoAtualProcessamento += t.TempoExecucao.Seconds; UltimaTarefaEnfileirada = t; }); while (TempoTotalProcessamento > TempoAtualProcessamento) { Tarefa tarefa = RetornaTarefaComMenorDeadLineMaisProximo(); FilaExecucao.Enqueue(tarefa); ProcessosExecutados.Enqueue(new ProcessoExecutado(tarefa, TempoAtualProcessamento)); TempoAtualProcessamento += tarefa.TempoExecucao.Seconds; UltimaTarefaEnfileirada = tarefa; } }
private static void SolicitarInformacoesTarefa(Tarefa tarefa) { while (!tarefa.DeadLine.HasValue) { ImprimeCabecalhoEmTela(); SysConsole.WriteLine("Tarefa " + tarefa.IdTarefa); SysConsole.Write("Informe o DeadLine/Pediodo:"); try { tarefa.DeadLine = Convert.ToInt32(SysConsole.ReadLine()); tarefa.Periodo = tarefa.DeadLine; tarefa.MenorDeadLineMaisProximo = tarefa.DeadLine; } catch (Exception) { SysConsole.WriteLine("O valor informado é inválido. O DeadLine/Periodo deve ser um número inteiro."); SysConsole.WriteLine("Precione qualquer tecla para continuar."); SysConsole.ReadKey(); } } }