public static void finalizarTimer() { try { timerP2P.Dispose(); timerP2P = null; } catch { timerP2P = null; } if (escutarConexao != null && escutarPeer == null) { if (ConexaoP2P.estadoEscutaConexao() == TaskStatus.RanToCompletion) { try { escutarConexao.Dispose(); escutarConexao = null; } catch { escutarConexao = null; } // MessageBox.Show("Aceitando Peer!"); ConexaoP2P.aceitarPeer(); } else { ConexaoP2P.finalizarConexao(); } } else { if (ConexaoP2P.estadoEscutaPeer() == TaskStatus.RanToCompletion) { //MessageBox.Show("Tratando dados!"); ConexaoP2P.tratarDados(); try { escutarPeer.Dispose(); escutarPeer = null; } catch { escutarPeer = null; } } else { ConexaoP2P.finalizarConexao(); } } }
private void Form2_Load(object sender, EventArgs e) { interpretacao = (object obj) => { //bool flagFim = false; semaforoDesenhaveis.WaitOne(); //inicializarTimer(5); //MessageBox.Show("Interpretando"); if (!DesenhavelRepositorio.estaVazio()) { try { Invalidate(); g = CreateGraphics(); //resetar os gráficos } catch { } Desenhavel desenhavel = DesenhavelRepositorio.obter(); if (desenhavel != null) { interpretarDesenhavel(desenhavel); } caneta = new Pen(Color.Gray, 5); float[] padrao = { 3, 6 }; caneta.DashPattern = padrao; g.DrawLine(caneta, 0, this.Height / 2, this.Width, this.Height / 2); while (!DesenhavelRepositorio.Primeiro) //significa que esse é o primeiro desenhável { desenhavel = DesenhavelRepositorio.obter(); if (desenhavel != null) { interpretarDesenhavel(desenhavel); } } //DesenhavelRepositorio.limpar(); } semaforoDesenhaveis.Release(); //semaforoDesenhaveis.Release(); receberDesenhaveis = new Task(recebimento, "receberDesenhaveis"); //inicializarTimer(4); receberDesenhaveis.Start(); }; recebimento = (object obj) => { bool estaEscutando = false; //bool flagFim = false; semaforoDesenhaveis.WaitOne(); //inicializarTimer(4);*/ //MessageBox.Show("Escutando"); DesenhavelRepositorio.limpar(); if (!ControladorDesenhavel.Interpretando) { ConexaoP2P.tratarDados(); estaEscutando = true; } //esse método já recebe e adiciona na //classe DesenhavelRepositorio semaforoDesenhaveis.Release(); interpretarDesenhaveis = new Task(interpretacao, "interpretarDesenhaveis"); //inicializarTimer(5); interpretarDesenhaveis.Start(); //semaforoDesenhaveis.Release(); }; Action <object> controleSemaforo = (object obj) => { administrarSemaforo(); }; semaforoDesenhaveis = new Semaphore(0, 1); controlarSemaforo = new Task(controleSemaforo, "controlarSemaforo"); // receberDesenhaveis.Start(); flagFimInterpretacao = true; //receberDesenhaveis.Start(); semaforoDesenhaveis.Release(); controlarSemaforo.Start(); //finalizarTimer(true); }