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
Cree un proyecto vacío y cree una referencia a los espacios de nombres necesarios mediante estos pasos:
En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias y seleccione Agregar referencia.
En la pestaña .NET Framework, desplácese a System.dll y haga clic en Seleccionar.
Desplácese a evenSystem.ServiceProcess.dll y haga clic en Seleccionar.
Haga clic en Aceptar.
Agregue una clase y configúrela para que herede de ServiceBase:
public class UserService1 : ServiceBase { }
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
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
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
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
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.
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.
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.
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.
Instale el servicio. Para obtener más información, vea Cómo: Instalar y desinstalar servicios.