Il semble stupide de diffuser le message "L'utilisateur X est déconnecté" lorsque le tableau des utilisateurs connectés a changé car vous auriez besoin de comparer les deux tableaux en permanence. Les messages qu'un utilisateur a déconnectés seraient répétés parce que vous garderiez une copie constante de "vieux", rempli d'utilisateurs enregistrés et un "nouveau" toujours changeant qui aurait besoin d'être vérifié par rapport à l'ancien.
Disons que nous avons les utilisateurs Brian, Jack, John et Lisa, nos tableaux se présente comme suit:
Users[Brian, Jack, John, Lisa]
LoggedIn[Brian, Jack, John, Lisa]
Lisa se déconnecte et compare LoggedIn aux utilisateurs par une boucle à travers les deux et savoir qui est manquant dans LoggedIn et diffusé.
Users[Brian, Jack, John, Lisa]
LoggedIn[Brian, Jack, John]
Broadcast: "Lisa has logged out"
Ensuite, Brian se déconnecte et nous faisons la même chose. Boucle à travers les deux et savoir qui manque:
Users[Brian, Jack, John, Lisa]
LoggedIn[Jack, John]
Parce que nous devons boucle à travers chaque utilisateur, les messages qui se diffusés sont:
"Brian has logged out"
"Lisa has logged out"
Le message « Lisa a déconnecté » a été diffusé deux fois parce que nous devons comparer les tableaux et savoir qui a disparu. C'est une mauvaise façon de gérer ce type de notification, car vous créerez des doublons chaque fois que vous comparez.
Au lieu de cela, envisager de créer une méthode qui gère lorsqu'un utilisateur se déconnecte et est appelé à partir d'un bouton clic:
private void btnLogOut_Click(object sender, EventArgs e)
{
LogOut(user);
}
private void LogOut(string username)
{
//Remove username from LoggedIn array
//Broadcast: username + " has logged out."
}
De cette façon, vous gérez beaucoup plus facilement qui est connecté parce que vous n'avez pas utiliser des boucles pour comparer des tableaux d'utilisateurs et de connexions.
'Except' pouvez-vous obtenir les utilisateurs ajoutés sûr – BradleyDotNET