Procedura: Scrivere servizi a livello di codiceHow to: Write Services Programmatically

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.If you choose not to use the Windows Service project template, you can write your own services by setting up the inheritance and other infrastructure elements yourself. Quando si crea un servizio a livello di codice, è necessario eseguire diversi passaggi che altrimenti vengono gestiti automaticamente dal modello:When you create a service programmatically, you must perform several steps that the template would otherwise handle for you:

  • È necessario impostare la classe del servizio in modo che erediti dalla classe ServiceBase.You must set up your service class to inherit from the ServiceBase class.

  • È necessario creare un metodo Main per il progetto del servizio che definisce i servizi da eseguire e chiama il metodo Run su di essi.You must create a Main method for your service project that defines the services to run and calls the Run method on them.

  • È necessario eseguire l'override delle procedure OnStart e OnStop e scrivere l'eventuale codice che si vuole eseguire con tali procedure.You must override the OnStart and OnStop procedures and fill in any code you want them to run.

Per scrivere un servizio a livello di codiceTo write a service programmatically

  1. Creare un progetto vuoto e creare un riferimento agli spazi dei nomi necessari seguendo questa procedura:Create an empty project and create a reference to the necessary namespaces by following these steps:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti e scegliere Aggiungi riferimento.In Solution Explorer, right-click the References node and click Add Reference.

    2. Nella scheda .NET Framework scorrere fino a System.dll e fare clic su Seleziona.On the .NET Framework tab, scroll to System.dll and click Select.

    3. Scorrere fino a System.ServiceProcess.dll e fare clic su Seleziona.Scroll to System.ServiceProcess.dll and click Select.

    4. Fare clic su OK.Click OK.

  2. Aggiungere una classe e configurarla in modo che erediti da ServiceBase:Add a class and configure it to inherit from ServiceBase:

    public class UserService1 : System.ServiceProcess.ServiceBase  
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Aggiungere il codice seguente per configurare la classe di servizio:Add the following code to configure your service class:

    public UserService1() 
    {
        this.ServiceName = "MyService2";
        this.CanStop = true;
        this.CanPauseAndContinue = true;
        this.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:Create a Main method for your class, and use it to define the service your class will contain; userService1 is the name of the class:

    public static void Main()
    {
        System.ServiceProcess.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.Override the OnStart method, and define any processing you want to occur when your service is started.

    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.Override any other methods you want to define custom processing for, and write code to determine the actions the service should take in each case.

  7. Aggiungere i programmi di installazione necessari per l'applicazione di servizio.Add the necessary installers for your service application. Per altre informazioni, vedere Procedura: Aggiungere programmi di installazione all'applicazione di servizio.For more information, see How to: Add Installers to Your Service Application.

  8. Compilare il progetto scegliendo Compila soluzione dal menu Compila.Build your project by selecting Build Solution from the Build menu.

    Nota

    Non è possibile eseguire un progetto di servizio premendo F5.Do not press F5 to run your project — you cannot run a service project in this way.

  9. Creare un progetto per il programma di installazione e le azioni personalizzate per installare il servizio.Create a setup project and the custom actions to install your service. Per un esempio, vedere Procedura dettagliata: creazione di un'applicazione di servizio Windows in Progettazione componenti.For an example, see Walkthrough: Creating a Windows Service Application in the Component Designer.

  10. Installare il servizio.Install the service. Per altre informazioni, vedere Procedura: Installare e disinstallare servizi.For more information, see How to: Install and Uninstall Services.

Vedere ancheSee also