ハテナキハテナ --unics’s think/sync

福井のまんなかでぼんにょり呟く、ゆにくすの日々オボエガキなど。

.NETにおけるMutex。

/// <summery>
/// アプリケーションのエントリポイント
/// </summery>
[STAThread]
static void Main()
{
    // ミューテックス管理を宣言("hoge"の部分は任意文字列)
    Mutex mutex = new Mutex(false, "hoge");
    
    //ミューテックスの所有権を要求する
    if (mitex.WaitOne(0, false) == false)
    {
        //すでに起動していると判断する
        MessageBox.Show("多重起動はできません。");
    }
    else
    {
        // 多重起動されていなかったら通常の起動動作
        Application.Run(new Form1());
    }

    // アプリケーションが終わるまでミューテックス参照を維持
    GC.KeepAlive(mutex);
}

参照した記事にはもっと他の方法もあるけれど、気をつけないとミューテックスオブジェクトを破棄されて例外が発生してしまう模様。上の記述でとりあえずはOKかな…。
DOBON.NETさん:二重起動を禁止する: .NET Tips

qqq for your reading!!
(c)Electro-U-nics --since 2004.03.26