Condividi tramite


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

  1. Creare un progetto vuoto e creare un riferimento agli spazi dei nomi necessari seguendo questa procedura:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti e scegliere Aggiungi riferimento.

    2. Nella scheda .NET Framework scorrere fino a System.dll e fare clic su Seleziona.

    3. Scorrere fino a System.ServiceProcess.dll e fare clic su Seleziona.

    4. Fare clic su OK.

  2. Aggiungere una classe e configurarla in modo che erediti da ServiceBase:

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  7. Aggiungere i programmi di installazione necessari per l'applicazione di servizio. Per altre informazioni, vedere Procedura: Aggiungere programmi di installazione all'applicazione di servizio.

  8. Compilare il progetto scegliendo Compila soluzione dal menu Compila.

    Nota

    Non è possibile eseguire un progetto di servizio premendo F5.

  9. 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.

  10. Installare il servizio. Per altre informazioni, vedere How to: Install and Uninstall Services.

Vedi anche