2010-02-24 29 views
5

Necesito comprobar si mi servicio de ventana se está ejecutando o no cada 15 minutos más o menos.¿Verifica si se está ejecutando un servicio de Windows?

Si no se está ejecutando, ¿cómo puedo reiniciar el servicio de Windows otra vez?

+0

¿Con otro servicio de Windows? –

+0

no en el servicio – user280154

+0

no sé como tengo un servicio de ventana y he intentado ejecutarlo si no está funcionando pero no puedo hacerlo – user280154

Respuesta

15

Puede comprobar si un servicio se está ejecutando con una ServiceController:

ServiceController sc = new ServiceController("servicename"); 

if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) || 
    (sc.Status.Equals(ServiceControllerStatus.StopPending))) 
{ 
    // Start the service if the current status is stopped. 
    sc.Start(); 
} 

Por supuesto, usted tendrá que llamar a esto desde otro servicio, o crear como un pequeño programa que luego se puede programar para funcionar cada 15 minutos más o menos.

+0

gracias por la palabra pero esto lo he hecho pero cuando está parado sc.start() da un error como que no puede iniciar el servicio en el nombre de la máquina ".". – user280154

+0

@user: Ow, pero ese es otro problema entonces. El registro de eventos debe mostrar más detalles sobre por qué el servicio no puede comenzar. – fretje

+0

para ver si el servicio de Windows no se está ejecutando, entonces este código no funcionará correctamente, por lo tanto, cómo verificar si el servicio se está ejecutando o no para fuera de este servicio de Windows. – user280154

2

Si el servicio no se está ejecutando, no se puede verificar solo.

Tendrá que utilizar un segundo servicio que realice la comprobación.

+0

correcto que era el ans que estaba buscando ahora mi próxima pregunta será ¿puedo usar un hilo para hacerlo? Si es así, ¿cómo puedo hacer un hilo del servicio actual si puedes compartir cualquier sitio que explique que sería altamente apreciado. – user280154

+0

@ user280154 - Haga la pregunta de subprocesamiento como una nueva pregunta.Y no olvide aceptar la respuesta (haga clic en la marca de verificación junto a la respuesta que desee). – Oded

11

No es necesario un proceso adicional para recuperar su servicio:

Si usted quiere estar seguro de que su servicio de Windows siempre está en funcionamiento, comprobar sus propiedades en la ficha Recuperación. Establezca todas las acciones de falla para "Reiniciar el servicio" y configure "Reiniciar servicio después" en 0 minutos. En el momento en que desaparece su servicio, se reiniciará inmediatamente. Aumentar el tiempo de espera si está bien que esperar un poco más antes de realizar un reinicio:

Service Recovery settings http://www.robvangroenewoud.com/images/service_recovery.png

1

La funcionalidad integrada de Windows Servicios de recuperación (véase la captura de pantalla en el post de Rob arriba) probablemente satisfacer sus necesidades. Si no es así, sugiero probar Service Protector, que está diseñado para mantener automáticamente sus importantes servicios de Windows en funcionamiento las 24 horas, los 7 días de la semana.

Cuestiones relacionadas