[編集]

C#

タグ :C#

C# や .NET Framework に関するメモなど

[編集]

二重起動防止

  • C# - 二重起動を確実に禁止する
    • System.Threading。Mutex を使用する方法。
      Mutex の 開放を忘れずに行うこと(異常終了扱いになったりする)。
      static class Program
      {
          /// <summary>
          /// アプリケーションのメイン エントリ ポイントです。
          /// </summary>
          [STAThread]
          static void Main(){
      
              Mutex mutex = null;
      
              try
              {
                  mutex = new Mutex(false, Properties.Resources.STR_APP_NAME);
      
                  if (mutex.WaitOne(0, false))
                  {
                      // アプリケーションの実行
                      Application.EnableVisualStyles();
                      Application.SetCompatibleTextRenderingDefault(false);
                      Application.Run(new Form1());
                  }
                  else
                  {
                      MessageBox.Show("プログラムが二重に起動しています。", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                  }
      
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop);
              }
              finally
              {
                  if (mutex != null) { GC.KeepAlive(mutex); mutex.Close(); }
              }
          }
      }