Cómo: Crear servicios mediante programación
Actualización: noviembre 2007
Si elige no utilizar la plantilla de proyecto Servicio de Windows, puede escribir sus propios servicios configurando la herencia y otros elementos de infraestructura personalmente. Cuando cree un servicio mediante programación, deberá ejecutar varios pasos que, de no ser así, la plantilla controlaría en su lugar:
Debe configurar la clase de servicio para heredar de la clase ServiceBase.
Debe crear un método Main para el proyecto de servicio que defina los servicios que se van a ejecutar y llame al método Run de éstos.
Debe reemplazar los procedimientos OnStart y OnStop y escribir en ellos el código que desea que ejecuten.
Nota: La plantilla Servicio de Windows con su funcionalidad asociada no está disponible en Visual Studio Standard.
Para escribir un servicio mediante programación
Cree un proyecto vacío y cree una referencia a los espacios de nombres necesarios siguiendo estos pasos:
En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en el nodo Referencias y haga clic en Agregar referencia.
En la ficha .NET Framework, desplácese a System.dll y haga clic en Seleccionar.
Desplácese a System.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 Inherits System.ServiceProcess.ServiceBase End Class
public class UserService1 : System.ServiceProcess.ServiceBase { }
public class UserService1 extends System.ServiceProcess.ServiceBase { }
Agregue el código siguiente para configurar la clase de servicio:
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
public UserService1() { this.ServiceName = "MyService2"; this.CanStop = true; this.CanPauseAndContinue = true; this.AutoLog = true; }
public UserService1() { this.set_ServiceName("MyService2"); this.set_CanStop(true); this.set_CanPauseAndContinue(true); this.set_AutoLog(true); }
Cree un método Main para su clase y utilícelo para definir el servicio que contendrá la clase; userService1 es el nombre de la clase:
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
public static void Main() { System.ServiceProcess.ServiceBase.Run(new UserService1()); }
public static void main() { System.ServiceProcess.ServiceBase.Run(new UserService1()); }
Reemplace el método OnStart y defina los procesos que desea que se produzcan cuando se inicie el servicio.
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
protected override void OnStart(string[] args) { // Insert code here to define processing. }
protected void OnStart(System.String[] args) { // Insert code here to define processing. }
Reemplace los demás métodos para los que desea definir procesos personalizados y escriba código para determinar las acciones que el servicio deberá ejecutar en cada caso.
Agregue 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.
Genere el proyecto seleccionando Generar solución en el menú Generar.
Nota: No presione F5 para ejecutar el proyecto; no es posible ejecutar de esta forma un proyecto de servicio.
Cree un proyecto de instalación y las acciones personalizadas para instalar el servicio. Para obtener un ejemplo, vea Tutorial: Crear 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.
Vea también
Tareas
Cómo: Crear servicios de Windows
Cómo: Agregar instaladores a una aplicación de servicio
Cómo: Registrar información sobre servicios
Tutorial: Crear una aplicación de servicios de Windows en el Diseñador de componentes
Tutorial: Crear una acción personalizada