2010-02-24 19 views
5

Devo controllare se il mio servizio Windows è in esecuzione o meno ogni 15 minuti o giù di lì.Verificare se un servizio Windows è in esecuzione?

Se non è in esecuzione, come posso riavviare nuovamente il servizio Windows?

+0

Con un altro servizio di Windows? –

+0

no nel servizio – user280154

+0

non so come ho un servizio di finestra e ho provato a farlo funzionare se non è in esecuzione, ma io non sono in grado di farlo – user280154

risposta

15

È possibile controllare se un servizio è in esecuzione con un 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(); 
} 

Naturalmente, è necessario chiamare questo da un altro servizio, o crearlo come un piccolo programma che poi possibile pianificare per l'esecuzione ogni 15 minuti circa.

+0

grazie per l'ans ma questo ho fatto, ma quando viene fermato sc.start() dà un errore come se non potesse avviare il servizio sul nome della macchina ".". – user280154

+0

@user: Ow, ma questo è un altro problema allora. Il registro eventi dovrebbe mostrare maggiori dettagli sul motivo per cui il servizio non può essere avviato. – fretje

+0

verifica se il servizio Windows non è in esecuzione, quindi questo codice non funzionerà correttamente, quindi come verificare se il servizio è in esecuzione o meno per questo servizio Windows. – user280154

2

Se il servizio non è in esecuzione, non è in grado di controllarsi.

Sarà necessario utilizzare un secondo servizio che esegue il controllo.

+0

giusto quello era il ans che stavo cercando ora la mia prossima domanda sarà possibile posso usare un thread per farlo se così poi come posso fare un thread del servizio corrente se è possibile condividere qualsiasi sito che spiega che sarebbe altamente apprezzato. – user280154

+0

@ user280154 - Si prega di porre la domanda sul thread come una nuova domanda.E non dimenticare di _ accettare la risposta (fai clic sul segno di spunta accanto alla risposta che ti piace). – Oded

11

Non avete bisogno di un processo in più per recuperare il vostro servizio:

Se si vuole essere certi che il vostro servizio di Windows è sempre in esecuzione, controllare le proprietà nella scheda Ripristino. Impostare tutte le azioni non riuscite su "Riavvia il servizio" e impostare "Riavvia il servizio dopo" su 0 minuti. Nel momento in cui il servizio scompare, verrà riavviato immediatamente. Aumentare il timeout se è ok per aspettare un po 'più a lungo prima di un riavvio è fatto:

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

1

Il built-in funzionalità di Windows Recovery Services (vedi lo screenshot nel post di Rob sopra) sarà probabilmente soddisfare le vostre esigenze. In caso contrario, suggerisco di provare Service Protector, progettato per mantenere automaticamente i servizi Windows importanti in esecuzione 24 ore su 24, 7 giorni su 7.

Problemi correlati