Amélioration du contrôle des applications à instance unique à l'aide de mutex
L'utilisation de mutex pour garantir qu'une seule instance d'une application s'exécute est une technique standard. Analysons un exemple de code et discutons des améliorations.
Révision du code original :
Le code fourni utilise un mutex pour empêcher plusieurs instances d'application. Des améliorations sont cependant possibles :
try-catch
, mais manque de gestion spécifique des exceptions. Une gestion des erreurs plus robuste pour la création de mutex ou les échecs d'accès est nécessaire.Mise en œuvre améliorée :
Ce code amélioré corrige les lacunes :
<code class="language-csharp">static void Main(string[] args) { Mutex mutex = null; bool createdNew; try { mutex = new Mutex(true, AppDomain.CurrentDomain.FriendlyName, out createdNew); } catch (Exception ex) { // Handle mutex initialization errors MessageBox.Show($"Mutex initialization failed: {ex.Message}"); return; } if (!createdNew) { // Another instance is running MessageBox.Show("Another instance is already running. Exiting."); return; // Explicitly exit } else { // This is the first instance // Application logic goes here... // ...ensure mutex is released on exit (see below) } // Ensure the mutex is released even if the application crashes AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { mutex?.ReleaseMutex(); }; }</code>
Autres considérations :
AppDomain.CurrentDomain.ProcessExit
pour garantir la publication même en cas d'arrêt inattendu. Cela empêche le verrouillage des ressources.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!