C# 備忘録 アプリケーションの二重動作を抑制する その10

C言語C#
プログラマ
プログラマ

マネージャさん。アプリケーションが2重で立ち上がって誤動作してしまいます。同じアプリケーションを立ち上げたときの処理について教えてください。

マネージャ
マネージャ

はい。この記事では、アプリケーションが2重で立ち上がらないような処理についてお話したいと思います。

C#でアプリケーションの二重起動をさせないコードについてお話します。常駐ソフトなどでは、アプリケーションを二つ以上起動させたくない場合があります。ミューテックスを利用することで多重起動を抑止できます。C#の Windows フォームアプリケーションでは、Progarm.csファイルのMain()関数内にミューテックスの処理を記述することで実現できます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace SingleApplicationExecute
{
  static class Program
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main()
    {
      //ミューテックス作成
      Mutex app_mutex = new Mutex(false, ”MYSOFTWARE_001”);

      //ミューテックスの所有権を要求する
      if (app_mutex.WaitOne(0, false) == false) {
        MessageBox.Show(”このアプリケーションは複数起動できません。”);
        return;
      }
      
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new FormMain());
    }
  }
}

タイトルとURLをコピーしました