web.config
Código:
<appSettings>
<add key="servicio" value="c:\miServicio.exe"
</appsettings>
Con el ensamblado System.Diagnostic puedes recorrer el listado de procesos que se ejecutan en la máquina local, para cada proceso te entrega el id, nombre, estado, nº de hilos, etc...
si el servicio que deseas ejecutar está dentro del listado de procesos no debes iniciar una nueva instancia sería redundante y podrías poner en peligro la ejecución de tu servicio...
si el servicio no está entre los procesos lo ejecutamos...y qué cosa vamos a ejecutar...el servicio que tenemos grabado en el web.config con ruta y todo (porqué en el web.config y no en duro?...la respuesta es obvia, si cambias el servicio de lugar tu app ya no sirve)
El SO no puede matar el proceso por si sólo...no hay un tema de autogestión... no es autónomo (en este caso)... pero tu app o servicio si podría lanzar una excepción y autoeliminarse...
salu2
------
recorrer procesos del equipo local en ejecución
Código:
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
for (int i = 0; i < myProcesses.Length; i++)
{
string processName = myProcesses[i].ProcessName;
if ( processName.IndexOf("NombreDeTuApp") >= 0 )
//la app si está ejecutandose
else
{
//ejecutamos el servicio
System.Diagnostics.Process.Start(ConfigurationManager.AppSettings["servicio"].ToString());
break;
}
}