Erkennen Prozess Beenden Von Task-Manager In C#
Ich habe eine Anwendung in C# und möchte-monitor seinen aktuellen status, d.h. ob Sie läuft oder geschlossen ist. So weit ich bin in der Lage zu verfolgen Sie den status, wenn die Anwendung beendet wird, während ein run-time-Fehler, oder sonstige in Anwendung exit-codes.
Aber ich kann mich nicht einloggen der Anwendung-status, wenn es erzwungen wird geschlossen, indem Sie den task-manager.
Gibt es eine Möglichkeit zu überwachen "Prozess Beenden" - Veranstaltungen? oder muss ich einen separaten service zu halten ein Auge auf meine Bewerbung (die ich finden würde eine Verschwendung von Ressourcen)?
Kurze Geschichte:
Die Anwendung ist ein WCF-Abonnent-Anwendung, die gemeint ist für die Ausführung als Hintergrundprozess und empfangen von Daten vom server. Ich will nicht verwenden ein windows-Dienst, als ich bin der Gestaltung einer GUI, welches es ermöglicht clients das senden von Anforderungen an den server für spezifische Daten.
Dieser Antrag im Zusammenhang mit einem anderen Programm, das verfolgt die Spuren des Teilnehmers, ob der Teilnehmer online ist oder offline.
Somit war auf der Suche nach einem Weg, um track abrupte Anwendung schließen und benachrichtigt den Benutzer entsprechend.
mögliche Duplikate von Verhindern, dass Prozess geschlossen wird, die im task-manager
Sorry Für die vage Frage... Lassen Sie mich hinzufügen, eine kurze Geschichte, um die Frage genau, was ich tun will
Warum nicht nur machen Sie Ihre GUI ein WCF-client kann eine Verbindung zum lokalen Dienst, dann können Sie alle Vorteile des service-route, sondern auch eine client-GUI.
Ich bin wirklich sehr neu auf WCF, also noch lernen. Lassen Sie mich versuchen, mit dem WCF-client-Ansatz. Dank
InformationsquelleAutor Kush | 2012-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir sicher, dass ich gesehen habe, eine Frage wie diese SO vor, also ist das wohl eine doppelte, aber ich kann ihn nicht finden, also...
Hier ist eine kurze einwickeln:
Wenn Sie einen Prozess der "Prozesse" - Registerkarte, und klicken Sie auf "Prozess Beenden" der Prozess wird getötet mit
TerminateProcess()
- es gibt keinen Weg können Sie auch abfangen, dass von dem Prozess, geschweige denn, Sie zu verhindern.Wenn Sie wählen Sie "application" aus dem "Anwendungen" - tag, und klicken Sie auf "Task Beenden", was passiert, hängt von der Art der Anwendung:
CTRL_CLOSE_EVENT
Veranstaltung.WM_CLOSE
Nachricht.Konnten Sie reagieren (oder handle mit Protokollierung, etc.) beide.
Update: Nur die Vorliebe der Quelle wieder.
Update 2: gefunden/das Duplikat und die Abstimmung zu schließen. Ich lasse diese Antwort hier für jetzt.
InformationsquelleAutor Christian.K
Prozess.WaitForExit() und Process.Ereignis Exited. sehen hier für mehr info
InformationsquelleAutor aiodintsov