Anstatt abhängig von Prozessname, der auch versehentlich durch Umbenennen der ausführbaren Datei besiegt werden kann, ist die traditionelle Methode, nach einer vorhandenen Instanz zu suchen, ein benanntes Handle, z. B. ein Mutex. Überprüfen Sie während des Startvorgangs, ob es bereits vorhanden ist, und fahren Sie sofort herunter, wenn dies der Fall ist.
bearbeiten
Ich habe gerade gelesen, die Frage wieder und es klingt wie Sie wirklich die vorherige Instanz töten wollen, nicht die neue töten. Das nächste, an das ich mich erinnern kann, wenn ich dieses Verhalten sehe, ist das, was Google Chrome tut, wenn Sie ein neues Fenster öffnen und das alte nicht mehr reagiert. Aber auch das prüft auf mangelnde Reaktion und fordert den Benutzer auf. Das Töten des alten Prozesses klingt ein bisschen extrem. Bist du sicher, dass du das machen willst?
dieser Code braucht ein bisschen Arbeit, für einen es behandelt nicht verlassene Mutexe –
Ja, du hast Recht. Ich nehme an, Sie könnten die WaitOne-Methode auf dem Mutex aufrufen und wenn es fehlschlägt, fangen Sie den AbandonedMutexException-Fehler ab und behandeln Sie die Dinge entsprechend. Das ist auch keine wirklich gute Lösung. Wie ich schon sagte, es ist schnell und dreckig. : p – CalebHC