Mutex を使用したユーザー通知による単一インスタンス アプリケーションの起動
この記事では、ミューテックスを使用してアプリケーションの複数のインスタンスが同時に実行されないようにする方法と、重要なことに、インスタンスがすでに実行されている場合にユーザーに通知する方法を説明します。
ミューテックスのアプローチ
ソリューションの中核には、mutex (相互排他) オブジェクトの使用が含まれます。 ミューテックスはロックとして機能します。一度に 1 つのプロセスのみがその所有権を取得できます。 すでに存在するミューテックスを作成しようとすると失敗するため、別のインスタンスが実行されているかどうかを検出できるようになります。
ユーザー通知のコード拡張
提供されたコード スニペットは、Mutex.OpenExisting
を使用して実行中のインスタンスを確認します。 これを改善するために、ユーザー通知を追加します:
<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>
この拡張コードは、out createdNew
コンストラクターの Mutex
パラメーターを利用します。 createdNew
が false
の場合、ミューテックスがすでに存在していること、つまり別のインスタンスが実行中であることを示します。 MessageBox
はユーザーに通知し、新しいインスタンスは return
を使用して正常に終了します。 最後に、m.Dispose()
呼び出しにより、適切なリソースのクリーンアップが保証されます。 この方法は、複数のアプリケーションの起動を処理する明確でユーザーフレンドリーな方法を提供します。
以上がアプリの複数のインスタンスを防止し、既存のインスタンスをユーザーに通知するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。