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

Una console application di esempio
C#
using System;
using System.Threading;

namespace SingleInstance
{
    class Program
    {
        static void Main(string[] args)
        {
            //cre 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();
        }
    }
}
Potrebbe interessarti anche: