Opstart af flere processor, samt monitorering og automatisk genstart
Hejsa,Jeg er ved at (forsøge) udvikle et program, som skal have følgende funktioner:
1) Dynamisk opstart af programmer
2) Monitorering af disse efter de er startet
3) Ved crash skal, alt afhængigt af filen, den genstartes. Hvis det er en vigtig process, skal alle genstartes.
Jeg har indtil videre kommet frem til følgende.
Et dictionary, med parameterne til programmerne som skal startes.
Dictionary<string, dynamic> TestApps = new Dictionary<string, dynamic>
{
{"Calc", new {fileName = "calc.exe", args = "0"}},
{"cmd", new {fileName = "cmd.exe", args = "0"}},
};
Og jeg bruger følgende kode til, at starte programmerne med:
public void StartServer()
{
Thread thread = new Thread(() => InitServers());
thread.Start();
}
private void InitServers() {
foreach (KeyValuePair<String, dynamic> server in TestApps)
{
LaunchApplication(server.Value.fileName.ToString());
Thread.Sleep(2000);
}
}
public void LaunchApplication(string File)
{
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = File;
p.StartInfo = psi;
p.EnableRaisingEvents = true;
p.Start();
}
Hvilket fungerer udemærket. Jeg er dog i tvivl og det er god praksis at gøre sådan?
Hvad jeg ikke har kunnet finde ud af, er hvordan jeg skal tjekke om processerne kører. Jeg har rodet lidt med Process.Exited, men har ikke kunnet finde en måde at bruge det dynamisk.
Jeg har fået foreslået, at sende en KeepAlive packet til programmerne, men er ikke helt sikker på hvordan dette gøres, og om det er 'stabilt'.
Jeg vil derfor høre, om der sidder nogle kloge hoveder som kan give mig et fingerpej i den rigtige retning :-)