.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