Dove posso trovare una visione dettagliata del ciclo di vita di un servizio di Windows, come sviluppato in .NET?

StackOverflow https://stackoverflow.com/questions/1140002

Domanda

Dove posso trovare una visione dettagliata del ciclo di vita di un servizio di Windows, come sviluppato in .NET? Ho messo la mia domanda in questo modo perché non sono sicuro che una descrizione abbastanza dettagliata può essere postato qui, ma se si pensa di poter non esitate a provare.

Un esempio di una risposta errata sarebbe una pasta della descrizione dalla pagina MSDN: Introduzione a Windows Service Applications . Non basta quasi dettagliata. Per esempio, è un servizio di scaricata dalla memoria, e per questo il metodo Dispose viene chiamato? Oppure è solo ottenere fermato con il metodo OnStop, per poi essere riavviato senza inizializzazione chiamando il metodo OnStart?


A causa del fatto che la mia domanda è stato risposto, e presenta un'altra domanda, allo stesso tempo, qui ci sono alcuni riferimenti ad opporsi ciclo di vita (che ora so vale anche per i servizi) per l'uso da parte di futuri visitatori a questa domanda:

StackOverflow - Qual è il ciclo di vita .NET oggetto ?

tutorials.beginners.co.uk/read/id/188

developerfusion.com/article/1047/new-objectoriented-capabilities-in-vbnet/3 /

Enjoy!

È stato utile?

Soluzione

Il servizio di Windows è effettivamente una domanda con alcuni metodi in più esposti per il gestore del servizio di controllarla, vale a dire Stop(), Start(), Pause(), Continue() (o equivalenti).

Quando l'avvio è chiamato il dominio di applicazione è stato creato, la classe di servizio inizializzato e il metodo Start() chiamato. Sulla sosta il metodo Stop() viene chiamato prima il dominio applicazione viene scaricato dalla memoria.

Si può vedere questo con task manager. L'applicazione non esiste in memoria fino all'inizio viene chiamato e scompare dopo l'arresto è stato completato.

Per questo credo che la risposta alla tua domanda del ciclo di vita si trova nel ciclo di vita di un'applicazione standard .NET, che si tratti di linea di comando, WinForms o asp.net.

Vorrei inoltre consigliare però che se si dipendono dal metodo Dispose poi c'è un probabilmente un difetto mentire qualche parte nel disegno, nella maggior parte dei casi le risorse ripulito da uno Smaltire devono essere smaltiti con maggiore frequenza rispetto a quando il servizio Host chiama il componente da smaltire. La maggior parte dei servizi sono mearly un meccanismo per rispondere a un evento di sistema da qualche parte, nei casi in cui questo evento viene da una risorsa non gestita, è probabilmente solo vuole afferrare la risorsa OnStart e rilasciarlo OnStop, in situazioni in cui l'evento non è originario non gestito spazio allora probabilmente vuole afferrare e rilasciare le risorse non gestite in modo più tipo JustInTime modo in cui da li afferrare come una risorsa solo quando ne avete bisogno e li rilascia (tramite il loro metodo Dispose) non appena possibile. Per ulteriori letture controllare Quando e come utilizzare smaltire e . pattern Dispose netto

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