Пример #1
0
        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;
            }
        }
Пример #2
0
 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();
         }
     }
 }