Ovvero come controllare che venga eseguita una sola istanza dell'applicazione in C#.

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();
        }
    }
}
Tags:
C#236 .NET66 Esempi225
Potrebbe interessarti anche: