mercoledì 15 aprile 2026

C# Windows forms avviare una sola istanza del programma tramite la classe Mutex

Nello sviluppo software, può tornare utile avviare l'applicativo una sola volta, e non più esecuzioni contemporaneamente.
Tramite la classe Mutex, possiamo verificare se il programma è in esecuzione, ed in caso che è già avviato, evitare che venga aperta un'altra istanza.
Di seguito si riporta il frammento di codice, da inserire nella classe "Program", quella utilizzata per l'avvio del programma .

Dopo la dichiarazione di classe di Program, si crea un oggetto di tipo Mutex, di seguito il frammento di codice

C#

  internal static class Program

  {

      private static Mutex? mutex = null;






Nel metodo Main della classe "Program", inizializziamo l'oggetto, e nel costruttore il valore che ci restituisce come secondo parametro, di tipo boolean, verifichiamo se è già avviato oppure no, in caso che è già avviato, visualizziamo un messaggio a video ed usciamo dal programma senza continuare. 
Di seguito si riporta il frammento di codice delle suddette operazioni.


 C#

    [STAThread]

    static void Main()

    {

        const string NomeApplicazione = "WinTestVersione10";

        bool IsEsecuzione;

        mutex = new Mutex(true, NomeApplicazione, out IsEsecuzione);

        if (!IsEsecuzione)

        {

            MessageBox.Show("applicativo già avviato");

 

            return;

        }

        // To customize application configuration such as set high DPI settings or default font,

        // see https://aka.ms/applicationconfiguration.

        ApplicationConfiguration.Initialize();

        Application.Run(new Form1());

    }

}


Nessun commento: