ausgeführt wird Ich mache eine Anwendung, die den Status eines anderen Prozesses überwacht und neu startet, wenn sie nicht mehr reagiert, beendet wird oder einen Fehler auslöst. Ich habe jedoch Probleme, es zuverlässig überprüfen zu lassen, ob der Prozess (in einem C++ - Konsolenfenster) nicht mehr reagiert.Überprüfen, ob eine Konsolenanwendung noch mit der Prozessklasse
Mein Code sieht wie folgt aus:
public void monitorserver()
{
while (true)
{
server.StartInfo = new ProcessStartInfo(textbox_srcdsexe.Text, startstring);
server.Start();
log("server started");
log("Monitor started.");
while (server.Responding)
{
if (server.HasExited)
{
log("server exitted, Restarting.");
break;
}
log("server is running: " + server.Responding.ToString());
Thread.Sleep(1000);
}
log("Server stopped responding, terminating..");
try
{ server.Kill(); }
catch (Exception) { }
}
}
Die Anwendung Ich bin Überwachung Valves Source Dedicated Server ist, Garry Mod läuft, und ich bin über die Physik-Engine betont zu simulieren Anhalten reagiert. Dies löst jedoch niemals die Prozessklasse aus, die es als "nicht mehr reagiert" erkennt.
Ich weiß, es gibt Möglichkeiten, den Quellserver direkt mit ihrem eigenen Protokoll abzufragen, aber ich möchte es einfach und universell halten (damit ich es vielleicht für andere Anwendungen in der Zukunft verwenden kann).
Jede Hilfe willkommen
+1 für SLaks, die beste, die Sie verwalten können, ist "läuft es, oder hat es aufgehört?". Ich würde die proprietäre API verwenden, um den Status zu überprüfen. –