Ho un problema che non riesco a capire per quanto riguarda un servizio di Windows che ho scritto in C#. Quello che sto cercando di fare è aspettare un periodo specificato affinché un processo figlio termini prima che io sia costretto a ucciderlo e interrompere il servizio. Ho impostato il timeout da 5 a 15 secondi e il mio servizio attende il tempo appropriato, quindi uccide il bambino e si ferma quando lo interrompono tramite la finestra del servizio mmc. Tuttavia, se spengo il computer, il mio servizio viene spazzato via prima che sia in grado di attendere e fermarsi correttamente. Ho letto che Windows consente un timeout di 30 secondi prima che un servizio venga arrestato prima che venga scaricato. Il mio codice è in esecuzione in molto meno tempo di 30 secondi, il massimo è di circa 20 secondi o giù di lì, a seconda di cosa ho impostato il timeout a.Forzare Windows per attendere che un servizio si interrompa quando si sta arrestando
Ho provato a utilizzare la funzione SetServiceStatus() nell'API win32 ma non ha modificato la funzione del codice. Ho verificato che la chiamata alla funzione ha esito positivo. C'è un altro modo per forzare Windows ad aspettare che il mio servizio si arresti correttamente? Lo sto testando su Windows 7 x86 e Windows Vista Sp1 x86.
+1: * Ovviamente * la soluzione qui richiede che il servizio impieghi meno tempo per fermarsi. Molte applicazioni ignorano l'importanza di questo e di. –