アプリの二重起動を防止したいんですけどどうしたらいいですか?
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%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
コメント