Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 19013|Répondre: 0

[Source] C# ne permet que l’écriture correcte d’une seule instance de l’application pour s’exécuter

[Copié le lien]
Publié sur 10/12/2016 14:35:34 | | |
Les programmes C# n’autorisent qu’une seule instance à exécuter le bon code
http://www.itsvse.com/thread-3391-1-1.html
(Source : Architecte)


Le code ci-dessous est également erroné !! Code correct comme ci-dessus !!


Parfois, il faut autoriser une seule instance de l’application à s’exécuter, et lorsque le processus démarre, si elle découvre qu’une instance de l’application s’exécute, elle s’arrête automatiquement. Nous l’implémentons généralement dans la fonction Main via un mutex Mutex, qui s’écrit généralement :

Lorsque nous cherchons des réponses, nous allons et venons souvent à la hâte, ignorant les fonctionnalités et précautions de Mutex. Après un test simple, OK, passez-le et utilisez-le. À ce stade, nous oublions une condition importante :Conventions de nommage Mutex. La méthode d’écriture ci-dessus fonctionne sans aucun problème sous un seul utilisateur ; Sous multi-utilisateur, chaque utilisateur peut lancer une instance, donc une instance unique ne peut pas être garantie.

Si vous devez l’utiliser sur un serveur terminal et n’autoriser qu’une seule instance, utilisez la méthode suivante :


Voici la description du MSDN :


Sur les serveurs exécutant des services de terminal, le mutex système nommé peut avoir deux niveaux de visibilité. Si le nom commence par le préfixe « Global\ », le mutex est visible dans toutes les sessions du serveur de terminal. Si le nom commence par le préfixe « Local\ », le mutex n’est visible que dans la session serveur de terminal qui l’a créé. Dans ce cas, chaque autre session de serveur terminal sur le serveur peut avoir un mutex distinct portant le même nom. Si vous créez un mutex nommé sans spécifier de préfixe, il prendra le préfixe « Local\ ». Dans une session serveur de terminal, deux mutex avec des préfixes de noms différents sont mutex indépendants, et les deux mutex sont visibles pour tous les processus de la session serveur de terminal. Autrement dit, les préfixes « Global » et « Local » décrivent la plage du nom mutex par rapport à la session du serveur de terminal, et non par rapport au processus.






Précédent:L’enregistrement des composants pour l’interopération COM est grisé
Prochain:Les programmes C# n’autorisent qu’une seule instance à exécuter le bon code
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com