[C#]多重起動の抑止 | Assertion Failed!

[C#]多重起動の抑止

多重起動を抑止する


[環境]

VisualStudio2008

C# Windowsフォームアプリケーション


マイクロアドBTパートナーはブログやサイトに貼るだけ。お小遣いをゲットしよう!

Program.cs の最初に以下のようなコードを書く。


static class Program
{
  /// <summary>
  /// アプリケーションのメイン エントリ ポイントです。
  /// </summary>
  [STAThread]
  static void Main()
  {
    if (IsAlreadyStarted()) return;


    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
  }


  /// <summary>
  /// 多重起動制御
  /// </summary>
  /// <returns>true:起動中/false:起動していない</returns>

  static private bool IsAlreadyStarted()
  {
    string thisProcess = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
    if (System.Diagnostics.Process.GetProcessesByName(thisProcess).Length > 1)
    {
      return true;
    }
    return false;
  }
}