Ok, je me suis précipité pour répondre parce que j'ai mal compris la question. J'ai d'abord pensé que vous faisiez référence à des instances sur le même ordinateur.
Pour empêcher la présence de plusieurs instances sur le même ordinateur vous pouvez utiliser le Classe LocalMessageReceiver .
Vous pouvez voir un exemple de code aquí qui vous montre comment empêcher l'utilisateur d'ouvrir une deuxième instance de l'application. Chaque LocalMessageReceiver doit avoir un nom de canal unique comme paramètre du constructeur. Si le constructeur lève une exception, vous pouvez supposer qu'il existe une autre instance de l'application.
Si vous souhaitez conserver uniquement la dernière instance de l'application et fermer les précédentes, vous devez alors créer des noms de canaux uniques pour chaque instance, puis envoyer un message pour indiquer aux autres instances de se fermer.
Pour empêcher les instances multiples de l'application sur différents ordinateurs Je suis moins qualifié pour répondre, mais la première chose qui me vient à l'esprit est d'écrire dans la base de données chaque fois qu'un utilisateur se connecte .
Si vos services ne doivent pas nécessairement rester sans état, vous pouvez conserver dans une table de base de données un identifiant unique pour chaque fois qu'un utilisateur se connecte (ex : la date de connexion ?), et ensuite, chaque fois que l'utilisateur veut faire une action, vous pouvez vérifier si le dernier identifiant de la base de données correspond à celui que vous avez dans la session actuelle. Si ce n'est pas le cas, cela signifie que quelqu'un s'est connecté avec le même utilisateur depuis un autre ordinateur, et vous pouvez donc faire expirer la session.