Пример #1
0
 public static void OnStatusChanged(StatusChangedEventArgs e)
 {
     StatusChangedEventHandler statusHandler = StatusChanged;
     if (statusHandler != null)//HANDLER => manipulador
     {
         // chamar o delegado
         statusHandler(null, e);
     }
 }
Пример #2
0
        //Método para enviar uma mensagem a todos os utilizadores
        public static void SendMessage(string From, string Message)
        {
            StreamWriter swSenderSender;//Declaração de uma stream Writer para mandar o contexto da mensagem a todos os utilizadores

            e = new StatusChangedEventArgs(From + " diz: " + Message);//Mensagem do utilizador
            OnStatusChanged(e);

            TcpClient[] tcpClients = new TcpClient[ChatServer.htUsers.Count];//Cria um array para contar o numero de utilizadores disponiveis
            //Conta os utilizadores que se encontram na tabela hash

            ChatServer.htUsers.Values.CopyTo(tcpClients, 0);//Copia os valors TcpClient na matriz

            for (int i = 0; i < tcpClients.Length; i++)
            {

                try//Tenta enviar uma mensagem para cada utilizador
                {
                    if (Message.Trim() == "" || tcpClients[i] == null)//Se a mensagem for em branco nao manda nada
                    {
                        continue;
                    }

                    // Enviar mensagem para cada utilizador ligado ao servidor
                    swSenderSender = new StreamWriter(tcpClients[i].GetStream());//Declaração da Stream Writer passando por parâmetros a ligação de cada utilizador
                    swSenderSender.WriteLine(From + " diz: " + Message);//contexto da mensagem
                    swSenderSender.Flush();//Limpa os restos que podem ter ficado durante o envio
                    swSenderSender = null;//Stream Writer passa para valor nulo
                }
                catch//Se houver algum problema então é porque o utilizador já não se encontra presente! REMOVE-LO
                {
                    RemoveUser(tcpClients[i]);//Remove o utilizador da tabela hash
                }
            }
        }
 public void mainServidor_StatusChanged(object sender, StatusChangedEventArgs e)
 {
     // Chama o método que atualiza o formulário
     this.Invoke(new AtualizaStatusCallback(this.AtualizaStatus), new object[] { e.EventMessage });
 }