二重起動の防止
最終更新:
atachi
-
view
WPFでMutexを使用した二重起動の防止
二重起動のチェック方法にはMutexを使用するのが通説です。
WPFではApp.csにアプリケーションのエントリポイントがあるので、そこでMutexをチェックすれば二重起動のチェックができます。
public partial class App : Application {
literal string APP_MUTEX_KEY = "MyApplication";
private static System.Threading.Mutex mutex;
public App() : base() {
Startup += new StartupEventHandler(Application_Start);
Exit += new ExitEventHandler(Application_Exit);
}
private void Application_Start(object sender, StartupEventArgs e) {
mutex = new System.Threading.Mutex(false, APP_MUTEX_KEY);
// 二重起動をチェック
if( (!mutex.WaitOne(0,false)) {
// すでに起動済み
// エラーメッセージなどを出力
// Mutexを破棄
mutex.Close();
mutex = null;
this.Shutdown(); // アプリケーションを終了
}
}
private void Application_Exit(object sender, ExitEventArgs e) {
if( mutex != null ) {
// Mutexを解放
mutex.ReleaseMutex();
// Mutexを破棄
mutex.Close();
}
}
}