Domanda

La mia macchina dev è un 7 (x64) macchina Windows. Ho un po 'di codice (C #, .net 2.0) che in talune circostanze, controlli per vedere se un servizio è in esecuzione e quindi lo arresta.

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

Ora, io in grado di verificare MyService è infatti installato e funzionante. Posso dirvi Sono in esecuzione Visual Studio 2008 come amministratore durante il debug. Posso anche verificare che dopo un paio di Se affermazioni, mi finiscono nella parte .Stop () e .WaitForStatus () della programmazione. Io so che se passo la chiamata .Stop (), il servizio stesso continua a correre (guardando in servizi , anche se mi viene in mente forse sarebbe meglio prendere uno strumento migliore per questo. I 'm sicuro che ci sia qualche strumento di Sysinternals che mi potrebbe dare ulteriori informazioni). Come faccio un passo sopra la chiamata .WaitForStatus (), ho praticamente finisco in attesa per lo stato fermato. . . per sempre. Beh, ho lasciato stare lì per oltre 15 minuti di ieri (due volte) e non succede nulla. Non abbiamo mai facciamo alla successiva riga di codice. Ci si sente esattamente come di Bowie Space Oddity (si conosce la parte sto parlando).

C'è una lotta cose su MyService che non sai nulla. Cose che non avrebbe capito. Le cose non si poteva. . . lasciatemi dire questo discorso apertamente. Non ci sono servizi dipendono MyService e MyService dipende da nessun altro servizio. Addendum e MyOtherService SonOfMyService entrambi sembrano comportarsi in modo corretto, a questo punto nel codice. Tutti questi servizi condividono le stesse caratteristiche (sono i nostri servizi abbiamo covato in un laboratorio segreto e non hanno dipendenze). E 'possibile che ci sia qualcosa di sbagliato con la MyService installare o qualcosa del genere?

So che se mi fermo di debug a questo punto, MyService è ancora elencato come in esecuzione in servizi (anche dopo aver colpito di aggiornamento). Se provo a riavviarlo allora (o eseguire di nuovo la mia domanda e arrivare a questo punto), ottengo un messaggio su di esso non essere in grado di accettare i messaggi di controllo. Dopo di che, gli spettacoli di servizio su come sono fermato e posso iniziare normalmente.

Perché non è il servizio che viene fermato? Si tratta di un capriccio di Win 7? Una mancanza da parte mia per capire il ServiceController, o Win Servizi in generale?

È stato utile?

Soluzione

Dopo ulteriori indagini, credo che questo sia un problema con il servizio stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top