SingleInstance in .NET 2 e C#
Ovvero come controllare che venga eseguita una sola istanza dell'applicazione in C#.
Una console application di esempio
Una console application di esempio
C#
using System;
using System.Threading;
namespace SingleInstance
{
class Program
{
static void Main(string[] args)
{
// creo un oggetto Mutex x la sincronizzazione cross AppDomains
Mutex oneMutex = null;
// creo una stringa univoca per questa applicazione
// aggiungere un guid è un buon sistema
const string MutexName = "SingleInstance_{72322258-8E73-4990-96B1-D0A681D8A37A}";
try
{
// tento di aprire il mutex dell'applicazione
oneMutex = Mutex.OpenExisting(MutexName);
}
catch (WaitHandleCannotBeOpenedException) { }
if (oneMutex == null)
{
// se non esiste lo creo
oneMutex = new Mutex(true, MutexName);
}
else
{
// altrimenti lo chiudo
// così ho solo una applicazione in esecuzione
oneMutex.Close();
Console.WriteLine("Già in esecuzione");
return;
}
Console.WriteLine("L'unica istanza");
Console.Read();
}
}
}