Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este artículo no se aplica a los servicios hospedados en .NET. Para obtener el contenido más reciente sobre los servicios de Windows mediante Microsoft.Extensions.Hosting.BackgroundService y la plantilla de servicio de trabajador, consulte:
Las aplicaciones de servicio de Windows se basan en una clase que hereda de la System.ServiceProcess.ServiceBase clase . Invalida los métodos de esta clase y define la funcionalidad para ellos para determinar cómo se comporta el servicio.
Las clases principales implicadas en la creación del servicio son:
System.ServiceProcess.ServiceBase : invalida los métodos de la ServiceBase clase al crear un servicio y definir el código para determinar cómo funciona el servicio en esta clase heredada.
System.ServiceProcess.ServiceProcessInstaller y System.ServiceProcess.ServiceInstaller : estas clases se usan para instalar y desinstalar el servicio.
Además, se puede usar una clase denominada ServiceController para manipular el propio servicio. Esta clase no está implicada en la creación de un servicio, pero se puede usar para iniciar y detener el servicio, pasar comandos a él y devolver una serie de enumeraciones.
Definición del comportamiento del servicio
En la clase de servicio, invalida las funciones de clase base que determinan lo que sucede cuando se cambia el estado del servicio en el Administrador de control de servicios. La ServiceBase clase expone los métodos siguientes, que puede invalidar para agregar un comportamiento personalizado.
Método | Reemplazar por |
---|---|
OnStart | Indique qué acciones se deben realizar cuando el servicio empiece a ejecutarse. Debe escribir código en este procedimiento para que el servicio realice un trabajo útil. |
OnPause | Indique lo que debe ocurrir cuando el servicio está en pausa. |
OnStop | Indique lo que debe ocurrir cuando el servicio deja de ejecutarse. |
OnContinue | Indique lo que debe ocurrir cuando el servicio reanuda el funcionamiento normal después de pausarse. |
OnShutdown | Indique lo que debe ocurrir justo antes de que se apague el sistema, si el servicio se está ejecutando en ese momento. |
OnCustomCommand | Indique lo que debe ocurrir cuando el servicio recibe un comando personalizado. Para obtener más información sobre los comandos personalizados, vea MSDN online. |
OnPowerEvent | Indique cómo debe responder el servicio cuando se recibe un evento de administración de energía, como una batería baja o una operación suspendida. |
Nota:
Estos métodos representan estados a los que se mueve el servicio durante su vigencia; el servicio pasa de un estado a otro. Por ejemplo, nunca logrará que el servicio responda a un OnContinue comando antes de que se haya llamado a OnStart.
Hay otras propiedades y métodos que son de interés. Estos incluyen:
Método Run de la ServiceBase clase . Este es el punto de entrada principal para el servicio. Al crear un servicio mediante la plantilla servicio de Windows, el código se inserta en el método de la
Main
aplicación para ejecutar el servicio. Este código tiene este aspecto:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Nota:
Estos ejemplos usan una matriz de tipo ServiceBase, en la que se puede agregar cada servicio que contenga la aplicación y, después, todos los servicios se pueden ejecutar juntos. Sin embargo, si solo va a crear un único servicio, puede optar por no usar la matriz y simplemente declarar un nuevo objeto heredado de ServiceBase y, a continuación, ejecutarlo. Para obtener un ejemplo, vea Cómo: Escribir servicios mediante programación.
Una serie de propiedades de la ServiceBase clase . Determinan qué métodos se pueden llamar en el servicio. Por ejemplo, cuando la CanStop propiedad se establece en
true
, se puede llamar al método OnStop de su servicio. Cuando la propiedad CanPauseAndContinue se establece entrue
, los métodos OnPause y OnContinue se pueden llamar. Cuando configure una de estas propiedades entrue
, deberá reemplazar y definir el procesamiento para los métodos asociados.
También puede usar un componente denominado ServiceController para comunicarse con y controlar el comportamiento de un servicio existente.