Procedura: scrivere servizi a livello di codice
Nota
Questo articolo non si applica ai servizi ospitati in .NET. Per i contenuti più recenti sui servizi Windows che usano Microsoft.Extensions.Hosting.BackgroundService e il modello worker service, vedere:
Se si sceglie di non usare il modello di progetto Servizio Windows, è possibile scrivere servizi personalizzati impostando manualmente l'ereditarietà e altri elementi di infrastruttura. Quando si crea un servizio a livello di codice, è necessario eseguire diversi passaggi che altrimenti vengono gestiti automaticamente dal modello:
È necessario impostare la classe del servizio in modo che erediti dalla classe ServiceBase.
È necessario creare un metodo
Main
per il progetto del servizio che definisce i servizi da eseguire e chiama il metodo Run su di essi.È necessario eseguire l'override delle procedure OnStart e OnStop e scrivere l'eventuale codice che si vuole eseguire con tali procedure.
Per scrivere un servizio a livello di codice
Creare un progetto vuoto e creare un riferimento agli spazi dei nomi necessari seguendo questa procedura:
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti e scegliere Aggiungi riferimento.
Nella scheda .NET Framework scorrere fino a System.dll e fare clic su Seleziona.
Scorrere fino a System.ServiceProcess.dll e fare clic su Seleziona.
Fare clic su OK.
Aggiungere una classe e configurarla in modo che erediti da ServiceBase:
public class UserService1 : ServiceBase { }
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
Aggiungere il codice seguente per configurare la classe di servizio:
public UserService1() { ServiceName = "MyService2"; CanStop = true; CanPauseAndContinue = true; AutoLog = true; }
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
Creare un metodo
Main
per la classe e usarlo per definire il servizio che verrà incluso nella classe.userService1
è il nome della classe:public static void Main() { ServiceBase.Run(new UserService1()); }
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
Eseguire l'override del metodo OnStart e definire l'elaborazione da eseguire eventualmente all'avvio del servizio.
protected override void OnStart(string[] args) { // Insert code here to define processing. }
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
Eseguire l'override di qualsiasi altro metodo per cui si vuole definire un'elaborazione personalizzata e scrivere il codice per determinare le azioni che il servizio deve eseguire in ogni caso.
Aggiungere i programmi di installazione necessari per l'applicazione di servizio. Per altre informazioni, vedere Procedura: Aggiungere programmi di installazione all'applicazione di servizio.
Compilare il progetto scegliendo Compila soluzione dal menu Compila.
Nota
Non è possibile eseguire un progetto di servizio premendo F5.
Creare un progetto per il programma di installazione e le azioni personalizzate per installare il servizio. Per un esempio, vedere Procedura dettagliata: Creazione di un'applicazione di servizio Windows in Progettazione componenti.
Installare il servizio. Per altre informazioni, vedere How to: Install and Uninstall Services.
Vedi anche
- Introduzione alle applicazioni di servizio Windows
- Procedura: creare servizi Windows
- Procedura: aggiungere programmi di installazione all'applicazione di servizio
- Procedura: registrare informazioni sui servizi
- Procedura dettagliata: creazione di un'applicazione di servizio Windows in Progettazione componenti