2008-09-12 16 views
1

Von C# auf einer Windows-Box gibt es eine Möglichkeit, um herauszufinden, wie ein Prozess gestoppt wurde? Ich habe mir die Klasse Process angesehen, die es geschafft hat, einen netten freundlichen Rückruf vom Exited-Ereignis zu erhalten, sobald ich EnableRaisingEvents = true gesetzt habe; aber ich habe nicht herausgefunden, ob der Prozess getötet wurde oder ob er natürlich ausstieg?Wie wurde mein Prozess beendet?

Antwort

3

Starten Sie Process Process Monitor (von Sysinternals, ein Teil von Microsoft), führen Sie Ihren Prozess aus und lassen Sie ihn sterben, filtern Sie dann die Process Monitor-Ergebnisse nach Ihrem Prozessnamen - Sie werden alles sehen, was es getan hat, einschließlich exit Codes.

0

Sie können den Rückgabecode des Prozesses dafür verwenden. Wenn Ihr Prozess einen Wert ungleich null von seiner Main-Methode zurückgibt, können Sie dann überprüfen, ob der Prozess von selbst beendet wurde (der Rückgabewert stimmt überein).

0

Schöne Antwort Antoine, leider kann ich den Rückgabecode nicht ändern. Mein Fehler - ich denke, ich muss den Umfang der Frage eingrenzen.

Realistisch glaube ich nicht einmal, dass ich auch eine programmatische Lösung brauche - ein Dienstprogramm wäre in Ordnung - ich habe mir die beeindruckend aussehende Process Explorer angesehen, aber das scheint mir diese Details nicht zu geben.

Das Problem, das ich habe, ist das Programm, das ich abfragen möchte, wird von einem Zeitplanungssystem ausgeführt, das den geplanten Tasks von Windows entspricht, aber das nicht. Gibt es eine Möglichkeit festzustellen, ob dieser Scheduler das Programm zwangsweise stoppt?

Verwandte Themen