[C#][WPF]2重起動の禁止


WPFアプリケーションの2重起動禁止はMutexを使用して行います。
1.AppにMutexを追加する

//Threadingの名前空間を追加する
using System.Threading;
namespace XXXXXXXXX
{
public partial class App : Application
{
//ミューテックスを保持するメンバ変数を追加する
Mutex m_AppMutex;
}
}

2.App.Xaml.csにApplication_Startupを追加する
ソリューションエクスプローラのApp.Xamlを選択し、プロパティを選択します。
multi_002.jpg

イベントから"Startup"を選択しハンドラを追加します。
multi_003.jpg


private void Application_Startup(object sender, StartupEventArgs e)
{
//Mutexを作成する
m_AppMutex = new Mutex(false, "Mutex_XXXXXXXXX");
//Mutexの存在を確認する
if (!m_AppMutex.WaitOne(0, false))
{
m_AppMutex.Close();
m_AppMutex = null;
this.Shutdown();
}
}

3.App.Xaml.csにApplication_Exitを追加する
2.と同じ手順でExitのハンドラを追加し以下のようにMutexをクローズする処理を追加します。

private void Application_Exit(object sender, ExitEventArgs e)
{
//Mutexを解放する
if (m_AppMutex != null)
{
m_AppMutex.Close();
m_AppMutex = null;
}
}


0 件のコメント :

コメントを投稿