Esempio n. 1
0
        private async Task ApresentarCI(ContingenciaColateral CC)
        {
            CIFinalizado = false;
            ContingenciaInstrucional    CI    = CC.CI;
            List <UnidadeDoExperimento> tatos = CI.Tatos;
            int quantidadeTatos = tatos.Count;

            tasksTato     = new List <TaskCompletionSource <bool> >();
            tatoToPicture = new Dictionary <int, PictureBox>();
            pictureToTato = new Dictionary <PictureBox, int>();

            switch (quantidadeTatos)
            {
            case 1:
                tatoToPicture.Add(1, pictureTato3);
                pictureToTato.Add(pictureTato3, 1);

                pictureTato1.Visible = false;
                pictureTato2.Visible = false;
                pictureTato3.Visible = true;
                pictureTato4.Visible = false;
                pictureTato5.Visible = false;
                break;

            case 2:
                tatoToPicture.Add(1, pictureTato2);
                tatoToPicture.Add(2, pictureTato4);
                pictureToTato.Add(pictureTato2, 1);
                pictureToTato.Add(pictureTato4, 2);

                pictureTato1.Visible = false;
                pictureTato2.Visible = true;
                pictureTato3.Visible = false;
                pictureTato4.Visible = true;
                pictureTato5.Visible = false;
                break;

            case 3:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato3);
                tatoToPicture.Add(3, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato3, 2);
                pictureToTato.Add(pictureTato5, 3);

                pictureTato1.Visible = true;
                pictureTato2.Visible = false;
                pictureTato3.Visible = true;
                pictureTato4.Visible = false;
                pictureTato5.Visible = true;
                break;

            case 4:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato2);
                tatoToPicture.Add(3, pictureTato4);
                tatoToPicture.Add(4, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato2, 2);
                pictureToTato.Add(pictureTato4, 3);
                pictureToTato.Add(pictureTato5, 4);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato3.Visible = false;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;

            case 5:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato2);
                tatoToPicture.Add(3, pictureTato3);
                tatoToPicture.Add(4, pictureTato4);
                tatoToPicture.Add(5, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato2, 2);
                pictureToTato.Add(pictureTato3, 3);
                pictureToTato.Add(pictureTato4, 4);
                pictureToTato.Add(pictureTato5, 5);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato3.Visible = true;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;
            }

            panelCI.Visible = true;

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato.Add(new TaskCompletionSource <bool>(false));
                tatoToPicture[i + 1].BackColor = Color.White;
                tatoToPicture[i + 1].Image     = ImageUtils.Resize(tatos[i].Imagem, imageWidth, imageHeight);
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                await tasksTato[i].Task;
                tatoToPicture[i + 1].BackColor = Color.Green;
                relatorioSessao.AdicionarEvento(new EventoCI(sessaoAtual, CI, tatos[i]));
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato[i].TrySetResult(false);
            }

            CIFinalizado = true;
            await ApresentarCC(CC, true);
        }
Esempio n. 2
0
 private void EventoFimTempo(Object myObject, EventArgs myEventArgs)
 {
     relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"Sessão {sessaoAtual.Nome}; Fim do tempo limite, o experimento foi encerrado e mais nenhuma sessão apresentada"));
     RelatorioSessaoService.GeraRelatorio(relatorioSessao);
     MostrarTelaFimExperimento();
 }