public void mainServer_ListaChanged(object sender, ListaChangedEventArgs e) { // Chama o método encarregado de enviar a lista de usuários atualizada para os usuários conectados this.Invoke(new UpdateListaUsuariosCallback(this.UpdateLista), new object[] { e.EventListaUsuarios }); }
// É chamado quando o evento ListaChanged ocorre public static void OnListaChanged(ListaChangedEventArgs e) { ListaChangedEventHandler statusHandler = ListaChanged; if (statusHandler != null) { // Invoke the delegate statusHandler(null, e); } }
// Remove o usuário das tabelas hash public static void RemoveUsuario(TcpClient tcpUsuario) { // Se o usuário está na lista de conexões if (htConexoes[tcpUsuario] != null) { // Primeiro mostra a informação na tela e fala para os outros usuários que este usuário se desconectou EnviaMensagemDeAdministrador(htConexoes[tcpUsuario] + " saiu do chat"); // Remove o usuário das tabelas hash ChatServer.htUsuarios.Remove(ChatServer.htConexoes[tcpUsuario]); ChatServer.htConexoes.Remove(tcpUsuario); // Exibe na aplicação quem disse o que Listae = new ListaChangedEventArgs(ChatServer.htUsuarios); OnListaChanged(Listae); // Envia a lista de usuários atualizada para todos que estão conectados EnviaListaDeUsuariosAtualizada(); } }
// Adiciona o usuário nas tabelas hash public static void AdicionaUsuario(TcpClient tcpUsuario, string NomeUsuario) { //Primeiro adiciona o nome do usuário e associa a conexão, isso em ambas as tabelas hash ChatServer.htUsuarios.Add(NomeUsuario, tcpUsuario); ChatServer.htConexoes.Add(tcpUsuario, NomeUsuario); // Avisa que a lista de usuários mudou Listae = new ListaChangedEventArgs(ChatServer.htUsuarios); OnListaChanged(Listae); // Envia a lista de usuários atualizada para todos que estão conectados EnviaListaDeUsuariosAtualizada(); // Avisa sobre a nova conexão para todos os usuários e para o form do servidor também EnviaMensagemDeAdministrador(htConexoes[tcpUsuario] + " entrou no chat"); }