Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questo articolo non si applica ai servizi ospitati in .NET. Per il contenuto più recente nei servizi Windows che usano Microsoft.Extensions.Hosting.BackgroundService e il modello di servizio di lavoro, vedere:
Le applicazioni del servizio Windows si basano su una classe che eredita dalla System.ServiceProcess.ServiceBase classe . È possibile eseguire l'override dei metodi di questa classe e definire le funzionalità per determinare il comportamento del servizio.
Le classi principali coinvolte nella creazione del servizio sono:
System.ServiceProcess.ServiceBase — Eseguite l'override dei metodi della classe ServiceBase quando create un servizio e definite il codice che determina il funzionamento del vostro servizio in questa classe ereditata.
System.ServiceProcess.ServiceProcessInstaller e System.ServiceProcess.ServiceInstaller : queste classi vengono usate per installare e disinstallare il servizio.
Inoltre, una classe denominata ServiceController può essere usata per modificare il servizio stesso. Questa classe non è coinvolta nella creazione di un servizio, ma può essere usata per avviare e arrestare il servizio, passarvi i comandi e restituire una serie di enumerazioni.
Definizione del comportamento del servizio
Nella classe del servizio si esegue l'override delle funzioni della classe base che determinano cosa accade quando lo stato del servizio viene modificato in Gestione controllo servizi. La ServiceBase classe espone i metodi seguenti, che è possibile eseguire l'override per aggiungere un comportamento personalizzato.
Metodo | Sovrascrivere in |
---|---|
OnStart | Indicare le azioni da eseguire all'avvio dell'esecuzione del servizio. È necessario scrivere codice in questa procedura per consentire al servizio di eseguire operazioni utili. |
OnPause | Indicare cosa deve accadere quando il servizio viene sospeso. |
OnStop | Indicare cosa deve accadere quando il servizio smette di funzionare. |
OnContinue | Indicare cosa deve accadere quando il servizio riprende il normale funzionamento dopo essere stato sospeso. |
OnShutdown | Indicare cosa deve accadere subito prima dell'arresto del sistema, se il servizio è in esecuzione in quel momento. |
OnCustomCommand | Indicare cosa deve accadere quando il servizio riceve un comando personalizzato. Per altre informazioni sui comandi personalizzati, vedere MSDN online. |
OnPowerEvent | Indicare come il servizio deve rispondere quando viene ricevuto un evento di risparmio energia, ad esempio un'operazione a batteria insufficiente o sospesa. |
Annotazioni
Questi metodi rappresentano gli stati che il servizio passa attraverso nella sua durata; il servizio passa da uno stato a quello successivo. Ad esempio, non si otterrà mai che il servizio risponda a un comando OnContinue prima che OnStart sia stato chiamato.
Esistono diverse altre proprietà e metodi di interesse. Questi includono:
Metodo Run nella ServiceBase classe . Si tratta del punto di ingresso principale per il servizio. Quando si crea un servizio usando il modello di servizio Windows, il codice viene inserito nel metodo dell'applicazione
Main
per eseguire il servizio. Il codice è simile al seguente:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Annotazioni
Questi esempi usano una matrice di tipo ServiceBase, in cui ogni servizio contenuto dall'applicazione può essere aggiunto e quindi tutti i servizi possono essere eseguiti insieme. Se si crea un solo servizio, tuttavia, è possibile scegliere di non usare la matrice e semplicemente dichiarare un nuovo oggetto che eredita da ServiceBase e quindi eseguirlo. Per un esempio, vedere Procedura: Scrivere servizi a livello di codice.
Serie di proprietà nella ServiceBase classe . Questi determinano quali metodi possono essere chiamati sul tuo servizio. Ad esempio, quando la CanStop proprietà è impostata su
true
, è possibile chiamare il OnStop metodo nel servizio. Quando la CanPauseAndContinue proprietà è impostata sutrue
, è possibile chiamare i OnPause metodi e OnContinue . Quando si imposta una di queste proprietà sutrue
, è necessario eseguire l'override e definire l'elaborazione per i metodi associati.
È anche possibile usare un componente denominato ServiceController per comunicare e controllare il comportamento di un servizio esistente.