Questo semplice esempio di codice fa uso della Classe Mutex , la quale esegue una verifica di quanti processi di un applicazione sono eseguiti. Viene fornito un semplice esempio dimostrativo dove nel file Program.cs  e inserito il codice per evitare che vengano eseguiti due processi della stessa applicazione , quindi compilare il progetto , avviare l'applicazione per due volte dall'eseguibile prodotto dalla compilazione. Nel primo avvio l'applicazione si avvierà regolarmente , invece tentando di avviare un nuovo processo della stessa applicazione si avrà visualizzato un messaggio che indica che vi l'applicazione e già in esecuzione.

Ma ora vediamo come utilizzarla , in questo esempio viene eseguito nel file Program.cs una verifica mediante la classe Mutex.

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Windows.Forms;
 using System.Threading;
   
namespace MutexClassExample
 {
     static class Program
     {
         static Mutex m;
         /// <summary>
         /// Punto di ingresso principale dell'applicazione.
         /// </summary>
         [STAThread]
         static void Main()
         {
             bool first = false;
             m = new Mutex(true, Application.ProductName.ToString(), out first);
             if ((first))
             {
                 Application.EnableVisualStyles();
                 Application.SetCompatibleTextRenderingDefault(false);
                 Application.Run(new Form1());
                 m.ReleaseMutex();
             }
             else
             {
               MessageBox.Show("Applicazione" + " " + Application.ProductName.ToString() + " "  +"già in esecuzione");
             }
         }
     }
 }
Questa riga di codice  m = new Mutex(true, Application.ProductName.ToString(), out first); richiede tre parametri.Il primio  parametro initiallyOwned di tipo bool ,vero per dare la proprietà thread chiamante iniziale del mutex, altrimenti false.Il secondo parametro di tipo string a cui dobbiamo assegnare il nome della nostra applicazione , l'ultimo infine sempre di tipo bool che assegna il risultato alla variabile first . Quest'ultima determina se l'applicazione e già in esecuzione o meno a seconda dello stato. In questo caso se true avremo il messaggio di applicazione già in esecuzione , se false significa che non vi era ancora un processo della nostra applicazione avviato.

L'esempio completo e scaricabile a questo link http://code.msdn.microsoft.com/vstudio/Come-evitare-di-eseguire-3dfb6872