C # processo ciclo di riavvio
Domanda
Sto cercando di fare una console app che avrebbe dovuto monitorare qualche processo e riavviarlo se esce. Quindi, l'applicazione console è sempre acceso, è solo compito è quello di riavviare un altro processo.
ho postato il mio codice seguente .. funziona fondamentalmente, ma solo per un riavvio processo ...
Gradirei qualsiasi aiuto !!
Grazie in anticipo!
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(SOME_PROCESS);
p[0].Exited += new EventHandler(Startup_Exited);
while (!p[0].HasExited)
{
p[0].WaitForExit();
}
//Application.Run();
}
private static void Startup_Exited(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(AGAIN_THAT_SAME_PROCESS);
}
Soluzione
Hai bisogno di un ciclo, e nella parte superiore del ciclo è necessario ricollegare p
al nuovo processo dopo il riavvio del programma. Quindi, qualcosa di simile a:
Process p = /* get the current instance of the program */;
while (true)
{
p.WaitForExit();
p = Process.Start(/* the program */);
}
Si noti che, dal momento Process.Start restituisce l'oggetto Processo per la nuova istanza, non è effettivamente bisogno di ri-eseguire la ricerca:. Si può solo aspettare direttamente sul nuovo oggetto di processo
Altri suggerimenti
Sarei pronto a scommettere che, all'avvio di nuovo il processo, è necessario aggiornare il processo che p [0] punta verso e riattaccare il vostro gestore di eventi. Sembra che una volta che muore, i tuoi generato l'evento e non avete mai un gestore di eventi registrati con un processo di nuovo.