Question

Je travaille sur une application Windows. Je dois simuler Session (que nous avons dans une application Web) dans l'application Win où, si l'utilisateur est inactif pendant une certaine période, il est déconnecté. Le statut de connexion de l'utilisateur est conservé dans la base de données.

Des idées novatrices ???

Autres conseils

Ce qui vient à l’esprit, c’est d’utiliser un BackgroundWorker pour déconnecter l’utilisateur quand une minuterie atteint zéro. Cette minuterie est réinitialisée à chaque action de l'utilisateur. Vous pouvez également vous connecter à la souris ou au clavier pour que, lorsque l'utilisateur ne déplace pas la souris ou n'utilise pas le clavier, le compte à rebours commence jusqu'à ce qu'il atteigne l'heure de fermeture de session.

Vous pouvez créer une classe dans votre application dont le délai d’expiration est réinitialisé chaque fois que l’utilisateur interagit avec le logiciel. Si le délai est atteint, l'utilisateur est déconnecté.

La difficulté consiste à détecter les interactions de l'utilisateur. En ASP.NET est assez simple, vous devez essentiellement vérifier uniquement les demandes de page. Dans une application Windows Forms, vous devrez effectuer une saisie beaucoup plus détaillée (toute pression de touche dans une zone de texte sera une interaction utilisateur, par exemple). Je suppose que la propriété KeyPreview associée à un écouteur d’événement KeyPress sur le formulaire pourrait être un bon moyen d’aller de l’avant.

Eh bien, premièrement, qu'entendez-vous par inactif? Sur le Web, vous essayez de simuler un état où il n’en existe pas. Cependant, dans une application cliente, vous obtenez tous les événements de tri, même MouseMove. Onde idée est que vous pouvez créer UserControls à partir des contrôles d'entrée standard tels que TextBox, Button, etc., et leur demander de mettre à jour une sorte d'objet timer lorsque des événements sont appelés. L’autre consiste à renoncer aux commandes UserControl et à mettre à jour le minuteur dans chaque gestionnaire d’événements que vous créez. Il serait probablement plus simple de simplement mettre à jour le minuteur en fonction des événements MouseMove ou KeyDown du formulaire lui-même.

scroll top