Mehrfachstart einer Anwendung verhindern

// Programm.cs editieren
static class Program
{
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [STAThread]
    static void Main()
    {
        bool bNewMutex = false;
        // Mutex erzeugen, Mutexname = Test1
        System.Threading.Mutex mutex = new System.Threading.Mutex(true, "Test1", out bNewMutex);

        // wenn ein neuer Mutex erzeugt wurde,
        // dann wurde die Anwendung noch nicht
        // im System gestartet
        if (bNewMutex)
        {
            try
            {
                // Anwendung initialisieren und ausführen
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new frmMain());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                // beim Beenden den Mutex wieder zerstören
                mutex.ReleaseMutex();
            }
        }
        else
        {
            // falls der Mutex nicht angelegt werden konnte, dann läuft die Anwendung bereits
            MessageBox.Show("Die Anwendung läuft bereits.", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information);
        } 
    }
}