Procedimiento para escribir servicios mediante programación

Nota:

Este artículo no se aplica a servicios hospedados en .NET. Para el contenido más reciente sobre los servicios de Windows que utilizan Microsoft.Extensions.Hosting.BackgroundService y la plantilla del servicio de trabajo, consulte:

Si decide no utilizar la plantilla de proyecto de servicio de Windows, puede escribir sus propios servicios configurando la herencia y otros elementos de infraestructura. Al crear un servicio mediante programación, debe realizar varios pasos que, de lo contrario, la plantilla los controlaría:

  • Debe configurar la clase de servicio para que herede de la clase ServiceBase.

  • Debe crear un método Main para el proyecto de servicio que defina los servicios que se ejecutarán y llame al método Run en ellos.

  • Debe reemplazar los procedimientos OnStart y OnStop, y rellenar cualquier código que desee que se ejecute.

Para escribir un servicio mediante programación

  1. Cree un proyecto vacío y cree una referencia a los espacios de nombres necesarios mediante estos pasos:

    1. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias y seleccione Agregar referencia.

    2. En la pestaña .NET Framework, desplácese a System.dll y haga clic en Seleccionar.

    3. Desplácese a evenSystem.ServiceProcess.dll y haga clic en Seleccionar.

    4. Haga clic en Aceptar.

  2. Agregue una clase y configúrela para que herede de ServiceBase:

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Agregue el código siguiente para configurar la clase de servicio:

    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. Cree un método Main para la clase y utilícelo para definir el servicio que contendrá su clase; userService1 es el nombre de la clase:

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. Reemplace el método OnStart y defina cualquier procesamiento que desee que ocurra cuando se inicie el servicio.

    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. Reemplace cualquier otro método para el que desee definir un procesamiento personalizado y escriba código para determinar las acciones que debe realizar el servicio en cada caso.

  7. Agregar los instaladores necesarios para su aplicación de servicio. Para obtener más información, vea Cómo: Agregar instaladores a una aplicación de servicio.

  8. En el menú Compilar, seleccione Compilar solución para compilar el proyecto.

    Nota

    No presione F5 para ejecutar el proyecto: no se puede ejecutar un proyecto de servicio de esta manera.

  9. Cree un proyecto de instalación y las acciones personalizadas para instalar el servicio. Para obtener un ejemplo, vea Tutorial: Creación de una aplicación de servicios de Windows en el Diseñador de componentes.

  10. Instale el servicio. Para obtener más información, vea Cómo: Instalar y desinstalar servicios.

Vea también