定番ですが、グローバル・ミューテックスを利用して二重起動・多重起動を禁止します。
static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { // ミューテックス生成 using (System.Threading.Mutex mutex = new System.Threading.Mutex(false, Application.ProductName)) { // 二重起動を禁止する if (mutex.WaitOne(0, false)) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } else { MessageBox.Show("二重起動です"); } } } }
Mutexはプロセス間の同期などに使用します。上記の例ではMutexの名前に Application.ProductName を使用することで同じアプリケーションが二重起動することを禁止しています。
メインアプリケーションと設定ツールの同時起動を禁止するなど、複数のアプリケーションで同時起動を禁止する場合、Mutexにユニークな固定文字列を指定することで対応できます。