Feedback

C# - wpf single instance mutex

Veröffentlicht von am 20.05.2017
(0 Bewertungen)
Verhindern, dass ein WPF-Programm mehrmals gleichzeitig gestartet werden kann.

Das Erstellen und Abfragen des Mutex wird in der Datei App.xaml.cs umgesetzt. Dort einfach die Methode OnStartup() überschreiben. Diese Methode wird beim Programmstart als erstes ausgeführt. Darin erstellt ihr dann den Mutex mit einem eindeutigen! Namen. Die GUID bietet sich hier an. Wird eine bereits laufende Instanz erkannt, beendet sich die Anwendung in diesem Snippet (Meldung durch Messagebox). Alternativ könnt ihr auch den Focus auf die laufende Instanz setzen (kein Beispiel dazu in diesem Snippet).
Snippet in VB übersetzen
    /// <summary>
    /// Interaktionslogik für "App.xaml"
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            //Mutex mit eindeutigem Namen (bspw. GUID)
            Mutex mutex = new Mutex(true, "cbb99b16-cc52-47b1-b734-c0f4900ee23c");
            
            //Prüfung, ob Mutex schon länger aktiv ist..
            if (mutex.WaitOne(TimeSpan.Zero, true))
            {
                //Mutex ist gerade gestartet..
                base.OnStartup(e);
            }
            else
            {
                //Mutex läuft bereits längere Zeit..
                MessageBox.Show("Anwendung läuft bereits!");
                //Anwendung beenden
                Environment.Exit(0);
            }
            
        }
    }
Abgelegt unter wpf, mutex, c#, singleinstance.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!