• 追加された行はこの色です。
  • 削除された行はこの色です。
*C# [#e7e405e9]
RIGHT:タグ [[:C#]]
#description(C# や .NET Framework に関するメモなど)

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

|&amz(4774149489);&amz(4797361344);&amz(4797370084);|

#contents
//#ls
//#ls2(,title)

**二重起動防止 [#cc6ad8e3]

-[[C#|二重起動を禁止してコマンドライン引数を取得する>http://www.k4.dion.ne.jp/~anis7742/codevault/00050.html]]
--先に起動しているプログラムのフォームを操作するときは this.MainForm を使う。

-[[C# - 二重起動を確実に禁止する>http://jeanne.wankuma.com/tips/csharp/process/mutex.html]]
--System.Threading。Mutex を使用する方法。
Mutex の 開放を忘れずに行うこと(異常終了扱いになったりする)。
#pre{{
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(); }
        }
    }
}
}}

//----
//#comment
//----
//#attach
//----