C#二重起動を確実に禁止する

スポンサーリンク

二重起動 (多重起動) を防止するのには、いくつかの方法が考えられます。ここで紹介する方法は、Mutex を使用する方法です。

この方法では、Mutex に識別名をつけて判断しております。よって、実行ファイル名を変更しても確実に二重起動を防ぐことができます。

サンプルコード

以下にサンプルコードを示します。

C# 全般
[System.STAThread()]
private static void Main() {
    // Mutex の新しいインスタンスを生成する (Mutex の名前にアセンブリ名を付ける)
    System.Threading.Mutex hMutex = new System.Threading.Mutex(false, Application.ProductName);

    // Mutex のシグナルを受信できるかどうか判断する
    if (hMutex.WaitOne(0, false)) {
        Application.Run(new Form1());
    }

    // GC.KeepAlive メソッドが呼び出されるまで、ガベージ コレクション対象から除外される
    GC.KeepAlive(hMutex);

    // Mutex を閉じる (正しくは オブジェクトの破棄を保証する を参照)
    hMutex.Close();
}

関連するリファレンス

準備中です。

スポンサーリンク