Lancement d'une application à instance unique avec notification utilisateur à l'aide de Mutex
Cet article montre comment utiliser un mutex pour empêcher plusieurs instances d'une application de s'exécuter simultanément et, surtout, comment avertir l'utilisateur si une instance est déjà en cours d'exécution.
L'approche Mutex
Le cœur de la solution consiste à utiliser un objet mutex (exclusion mutuelle). Un mutex agit comme un verrou ; un seul processus à la fois peut en acquérir la propriété. Toute tentative de création d'un mutex qui existe déjà échouera, ce qui nous permettra de détecter si une autre instance est en cours d'exécution.
Amélioration du code pour la notification des utilisateurs
L'extrait de code fourni utilise Mutex.OpenExisting
pour rechercher une instance en cours d'exécution. Pour améliorer cela, nous ajoutons une notification utilisateur :
<code class="language-csharp">static void Main(string[] args) { bool createdNew; Mutex m = new Mutex(true, AppDomain.CurrentDomain.FriendlyName, out createdNew); if (!createdNew) { // Notify the user that an instance is already running. MessageBox.Show("An instance of this application is already running.", "Application Already Running", MessageBoxButtons.OK, MessageBoxIcon.Information); return; // Exit the new instance. } else { // Continue application execution. } // ... rest of your application code ... m.Dispose(); // Release the mutex when the application closes. }</code>
Ce code amélioré utilise le paramètre out createdNew
du constructeur Mutex
. Si createdNew
est false
, cela indique que le mutex existe déjà, ce qui signifie qu'une autre instance est en cours d'exécution. Un MessageBox
informe l'utilisateur et la nouvelle instance se termine normalement en utilisant return
. Enfin, l'appel m.Dispose()
garantit un bon nettoyage des ressources. Cette méthode fournit un moyen clair et convivial de gérer plusieurs lancements d'applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!