Mehrfache Starts von Anwendungen kontrollieren

Manchmal kommt es vor, dass man die mehrfachen Starts von Anwendungen unterbinden will, damit die Anwendung pro User nur einmal gestartet wird. Anders formuliert: Die Anwendung soll nicht parallel pro User gestartet werden können.

Hier hilft der Mutex, wie im Beispiel-Code unten. Durch die Vergabe von spezieller Name kann global auf einem Rechner, die Anzahl der parallel laufende Anwendungs-Prozesse limitiert und kontrolliert werden:

using (Mutex mutex = new Mutex(false, "MyVerySpecialPrefix0815\\" + GUID_OF_MY_APP))
{
// see: https://docs.microsoft.com/en-us/dotnet/api/system.threading.waithandle.waitone?view=net-5.0#System_Threading_WaitHandle_WaitOne_System_Int32_System_Boolean_
    if (!mutex.WaitOne(0, false))
    {
        DialogManager.ShowWarning("An instance of ACME application is running!", "Running multiple instances of this application is not allowed!");
    }
}