C#/VB  アプリケーションの二重起動を防止する方法

アプリの二重起動を防止したいんですけどどうしたらいいですか?

Mutexクラスを使用すると二重起動を防止できます。

目次

Mutexクラスで二重起動を防止する方法

 アプリケーションの二重起動を防止するには、Mutexクラスを使用します。

 Mutexクラスは、共有リソースにアクセスするときに使用される同期制御のためのクラスであり、この特徴を使い、複数のアプリケーションから1つのリソースを共有することにより、アプリケーションの二重起動を防ぐことができます。

 Mutexクラスは、アプリケーションをマルチスレッド化するときにも使用されます。

 Mutexクラスを使用することで、アプリケーションの二重起動を防ぐことができるだけでなく、アプリケーションをマルチスレッド化する際にも、スレッドセーフなアプリケーションを実装することができます。

using System;
using System.Threading;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // Mutexを作成する
            bool createdNew;
            Mutex mutex = new Mutex(true, "MyApplication", out createdNew);

            // Mutexを既に持っているプロセスがいる場合
            if (!createdNew)
            {
                // メッセージを表示して終了する
                Console.WriteLine("Another instance is already running.");
                return;
            }

            // アプリケーションを実行する...

            // Mutexを解放する
            mutex.ReleaseMutex();
        }
    }
}
Imports System
Imports System.Threading

Module Module1

    Sub Main()
        ' Mutexを作成する
        Dim createdNew As Boolean
        Dim mutex As New Mutex(True, "MyApplication", createdNew)

        ' Mutexを既に持っているプロセスがいる場合
        If Not createdNew Then
            ' メッセージを表示して終了する
            Console.WriteLine("Another instance is already running.")
            Return
        End If

        ' アプリケーションを実行する...

        ' Mutexを解放する
        mutex.ReleaseMutex()
    End Sub

End Module

 上記のサンプルは、Mutexクラスのコンストラクタを使用して、Mutexを作成します。作成するMutexには、名前を指定します。

 このとき、outパラメーターで指定した変数に、このMutexが新しく作成されたかどうかが格納されます。次に、作成されたMutexを既に持っているプロセスがいるかどうかを判定します。もし、既に持っているプロセスがいる場合は、アプリケーションを実行せずに終了します。

最後に、アプリケーションを実行し終わった後には、ReleaseMutexメソッドを使用して、Mutexを解放します。

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

Microsoft Learnの解説

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次