2011-04-06 3 views
0

J'ai une application Windows du côté de l'utilisateur et un service Web du côté administrateur qui sont connectés dans le LAN ...Comment contrôler le no. des utilisateurs connectés?

lorsque l'utilisateur exécute l'application Windows il y a un formulaire de connexion et lorsque l'utilisateur se connecte un appel de service Web est effectué et une ligne (contenant les détails de l'utilisateur) est ajoutée dynamiquement dans la table de la base de données présente du côté admin. Maintenant, je veux que seul le nombre spécifié d'utilisateurs devrait pouvoir se connecter, c'est-à-dire que si admin donne 3 utilisateurs alors seulement 3 utilisateurs devraient pouvoir se connecter et si le 4ème utilisateur essaye de se connecter il devrait donner un message d'erreur . des utilisateurs ont dépassé. J'ai essayé de le faire en utilisant pour la boucle comme:

for(count=0 ; count<noofusers ; count++) { //code for inserting the row dynamically into database }

mais ici simultanément 3 lignes sont ajoutées dans la base de données

Je veux que lorsque 1 connexions utilisateur 1 ligne doivent être ajoutés, quand un autre utilisateur de connexion le NOOfUsers devrait être incrémenté et la 2ème rangée devrait être ajoutée et ainsi de suite ... finalement quand le 4ème utilisateur se connecte il ne devrait pas être autorisé à ...

Quelqu'un peut-il s'il vous plaît m'aider avec ce problème ??

+2

Pourquoi ne pas simplement ajouter une nouvelle ligne lorsqu'un utilisateur se connecte, puis lorsqu'un autre utilisateur tente de se connecter, vérifiez combien de lignes sont dans la table? S'il y a déjà 3 lignes, affichez le message d'erreur. –

+0

Si vous ne l'avez pas déjà fait, vous devez penser à la façon dont les utilisateurs sont comptés comme n'étant plus connectés. Le plus simple est bien sûr un bouton de déconnexion, mais si l'application d'un utilisateur est détruite sans exécuter son code de connexion, vous pouvez vous retrouver connexion fantôme flottant autour de qui doit être effacé. – Chris

Répondre

0
private static object _lock = new object(); 

public void LogIn(string username, string password) 
{ 
    lock(_lock) 
    { 
     if (NumLoggedInUsers() >= MaxNumUsers()) 
     { 
      return "Sry dudez, too many userz"; 
     } 
    } 
} 

Je vais laisser NumLoggedInUsers() et MaxNumUsers comme exercice pour le lecteur.

Notez que j'ai bloqué cette vérification dans le cas où 2 personnes essaient de se connecter simultanément.

Questions connexes