C#では、WPFを使用して単一のインスタンスアプリケーションを作成するには、相互に排他的なボディと呼ばれるテクノロジーが必要です。相互除外は、一度に1つのアプリケーションインスタンスのみを実行できるようにすることを目的としています。
相互のprim責を理解してくださいアプリケーションリソースとして機能するシーカーとして機能する相互団体。アプリケーションが相互のprim責を作成すると、実際にこれらのリソースを「ロック」して、アプリケーションの他のインスタンスにアクセスするのを防ぎます。このメカニズムにより、一度に1つのアプリケーションインスタンスのみを実行できるようになります。 単一のインスタンスwpfアプリケーションを作成
単一のインスタンスWPFアプリケーションを作成するには、以下の手順に従ってください。
アプリケーションコードでは、静的ミューテックスオブジェクトを宣言します。 パラメーターは、相互に排他的な本体が最初にアプリケーションによって所有されていることを指定します。この識別子は、他のアプリケーションが同じ相互ボディを使用できないことを保証します。
2。相互に排他的な身体の所有権を確認してください:
アプリケーションが起動したときに、
メソッドを使用して、相互除外があるかどうかを確認します。このメソッドがを返す場合、アプリケーションが実行され続けることができる最初のインスタンスであることを意味します。 が返されると、別のインスタンスが既に実行されていることを意味します。
true
<code class="language-csharp">static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");</code>
アプリケーションが最初のインスタンスではない場合は、関数を使用してカスタムメッセージを送信して、2番目のインスタンスの実行中のインスタンスの開始試行を通知します。
WaitOne()
true実行中のインスタンスでは、カスタムメッセージはメインウィンドウのfalse
メソッドを書き換えることで処理されます。
<code class="language-csharp">if (mutex.WaitOne(TimeSpan.Zero, true)) { // 应用程序的第一个实例 } else { // 第二个实例,通知第一个实例并退出 }</code>
実行中のインスタンスがカスタムメッセージを受信した場合、メソッドを使用してフロントデスクに配置できます。
PostMessage()
これらの手順を実行することにより、単一のインスタンスWPFアプリケーションを作成して、1つのアプリケーションインスタンスのみが一度にアクティブになっていることを確認できます。
以上がミューテックスを使用して単一インスタンスWPFアプリケーションを作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。