ミューテックスを使用した単一インスタンスのアプリケーション制御の改善
ミューテックスを使用して、アプリケーションのインスタンスを 1 つだけ実行することを保証するのは標準的な手法です。 サンプルコードを分析して改善点について話し合いましょう。
元のコードレビュー:
提供されたコードは、複数のアプリケーション インスタンスを防ぐためにミューテックスを使用します。ただし、機能拡張は可能です:
try-catch
ブロックが使用されますが、特定の例外処理がありません。 ミューテックス作成またはアクセス失敗に対するより堅牢なエラー処理が必要です。拡張実装:
この改良されたコードは次の欠点を解決します:
<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>
さらなる考慮事項:
AppDomain.CurrentDomain.ProcessExit
を使用して、予期せぬ終了が発生した場合でもリリースを保証します。 これにより、リソースのロックが防止されます。以上がミューテックスを使用して単一インスタンスのアプリケーションの強制を改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。