WPF で二重起動を防止する

メモメモ.

アプリケーションが立ち上がる前に確認しなければならないので,
App.xaml.cs のスタートアップイベントを登録して記述します.

まず App.xaml に次のような記述をします.

Startup イベントと Exit イベントにハンドラを追加しています.

次に App.xaml.cs に当該ハンドラを実装します.

ポイントは 1 行目と 6 行目.
1 行目で特定の名前を付けた Mutex を生成します.
6 行目ではミューテックスの所有権を要求し,
特定の名前が既に使われているかどうかを確認しています.
上記の例では,既に使われている場合は
メッセージダイアログを表示した後にアプリケーションを終了させています.
もちろん mutex の Close() 等の後片付けを忘れずに.

アプリケーションを終了するときの処理も忘れずに.

mutex を解放しておかないと,
ひとつも起動していないのに
ミューテックスの所有権を得られずに二度と起動できないことになってしまいます.