Meine Anwendung muss sich beim Laden etwas anders verhalten, wenn bereits eine Instanz ausgeführt wird.Erkennen, ob eine andere Instanz der Anwendung bereits ausgeführt wird
Ich verstehe, wie man einen Mutex verwendet, um zu verhindern, dass zusätzliche Instanzen geladen werden, aber das löst mein Problem nicht ganz.
Zum Beispiel:
- Instanz 1 lädt, bekommt den Mutex.
- Instanz 2 lädt, kann den Mutex nicht bekommen, weiß, dass es eine andere Instanz gibt. So weit, ist es gut.
- Instanz 1 schließt, gibt den Mutex frei.
- Instanz 3 lädt, ruft den Mutex, weiß nicht, dass Instanz 2 noch läuft.
Irgendwelche Ideen? Zum Glück braucht es nicht mit mehreren Benutzerkonten oder ähnlichem zu tun zu haben.
(C#, Desktop-Anwendung)
Edit: Um zu klären, die Anwendung muss nicht auf eine einzelne Instanz beschränkt werden, führt nur eine etwas andere Start-up-Aktion, wenn es eine andere Instanz bereits ausgeführt wird. Mehrere Instanzen sind in Ordnung (und erwartet).
in dem Szenario, das Sie erwähnten, was ist das gewünschte Verhalten? sollte Instanz 3 tun, was Instanz 1 getan hat und Instanz 2 weiterhin wie zuvor verhalten? (vorausgesetzt, Sie möchten keine Einzelinstanz sicherstellen, da dies durch den Mutex gelöst wird. Instanz 2 wird schließlich trotzdem beendet) –
In diesem Szenario verhält sich Instanz 1 in einer Richtung, Instanz 2 und 3 müssen das alternative Verhalten verwenden. Wenn eine Instanz bereits ausgeführt wird, unabhängig davon, wann sie gestartet wurde oder was seither passiert ist, verhält sich eine neue Instanz leicht - wenn auch nicht signifikant - anders. Der Unterschied ist nur eine einmalige Aktion beim Laden. – Andy