C#のプログラムをつくるとき、多重起動を抑制したい場合があります。
そんなときに使えるのがMutexです。
下記のようなプログラムを実行してみます。
public static void Main() { using (Mutex mutex = new Mutex(false, "MutexSample")) { if (mutex.WaitOne(0, false)) { Console.WriteLine("OK"); Console.ReadLine(); } else { Console.WriteLine("NG"); Console.ReadLine(); } } }
Mutexのインスタンスを生成して、Mutexを取得できればOK、できなければNGを出力し、
そこで入力があるまで停止しています。
最初起動するとOKが出力されるはずです。何かキーを押すとプログラムが終了します。
再度起動してもOKが出力されます。
ここで、キーを押さずに起動中のままにしておき、新たに起動してみます。
するとふたつめのほうではNGとなるかと思います。
ひとつめのほうで取得したMutexを解放していないため、ふたつめのほうでは取得に失敗したためです。
このように、Mutexを使うことで多重起動を判定することができます。