ServiceBase Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una clase base para un servicio que existirá como parte de una aplicación de servicio. ServiceBase debe derivarse de al crear una nueva clase de servicio.
public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
inherit Component
Public Class ServiceBase
Inherits Component
- Herencia
- Derivado
Comentarios
Deriva de ServiceBase al definir la clase de servicio en una aplicación de servicio. Cualquier servicio útil invalida los OnStart métodos y OnStop . Para obtener funcionalidad adicional, puede invalidar OnPause y OnContinue con un comportamiento específico en respuesta a los cambios en el estado del servicio.
Un servicio es un ejecutable de larga duración que no admite una interfaz de usuario y que podría no ejecutarse en la cuenta de usuario que inició sesión. El servicio se puede ejecutar sin que ningún usuario haya iniciado sesión en el equipo.
De forma predeterminada, los servicios se ejecutan en la cuenta del sistema, que no es la misma que la cuenta de administrador. No puede cambiar los derechos de la cuenta del sistema. Como alternativa, puede usar para ServiceProcessInstaller especificar una cuenta de usuario con la que se ejecutará el servicio.
Un archivo ejecutable puede contener más de un servicio, pero debe contener un independiente ServiceInstaller para cada servicio. La ServiceInstaller instancia registra el servicio con el sistema. El instalador también asocia cada servicio a un registro de eventos que puede usar para registrar comandos de servicio. La main() función del archivo ejecutable define qué servicios se deben ejecutar. El directorio de trabajo actual del servicio es el directorio del sistema, no el directorio en el que se encuentra el archivo ejecutable.
Al iniciar un servicio, el sistema localiza el archivo ejecutable y ejecuta el OnStart método para ese servicio, incluido en el archivo ejecutable. Sin embargo, ejecutar el servicio no es lo mismo que ejecutar el ejecutable. El archivo ejecutable solo carga el servicio. Se tiene acceso al servicio (por ejemplo, iniciado y detenido) a través del Administrador de control de servicios.
El ejecutable llama al constructor de la ServiceBase clase derivada la primera vez que llama a Start en el servicio. El OnStart método de control de comandos se llama inmediatamente después de que se ejecute el constructor. El constructor no se ejecuta de nuevo después de la primera vez que se ha cargado el servicio, por lo que es necesario separar el procesamiento realizado por el constructor de que realizó OnStart. Los recursos que se pueden liberar OnStop deben crear en OnStart. La creación de recursos en el constructor impide que se creen correctamente si el servicio se inicia de nuevo después OnStop de haber liberado los recursos.
Service Control Manager (SCM) proporciona una manera de interactuar con el servicio. Puede usar el SCM para pasar comandos Start, Stop, Pause, Continue o personalizados en el servicio. El SCM usa los valores de CanStop y CanPauseAndContinue para determinar si el servicio acepta comandos Stop, Pause o Continue. Stop, Pause y Continue están habilitados en los menús contextuales de SCM solo si la propiedad CanStop correspondiente o CanPauseAndContinue está true en la clase de servicio. Si está habilitado, se pasa el comando al servicio y OnStopse llama a , OnPauseo OnContinue . Si CanStop, CanShutdowno CanPauseAndContinue es false, el método de control de comandos correspondiente (por OnStopejemplo, ) no se procesará, aunque haya implementado el método .
Puede usar la ServiceController clase para hacer mediante programación lo que hace el SCM mediante una interfaz de usuario. Puede automatizar las tareas disponibles en la consola. Si CanStopes , CanShutdowno CanPauseAndContinue pero true no ha implementado un método de control de comandos correspondiente (por OnStopejemplo, ), el sistema produce una excepción y omite el comando.
No es necesario implementar OnStart, OnStopni ningún otro método en ServiceBase. Sin embargo, el comportamiento del servicio se describe en OnStart, por lo que, como mínimo, este miembro debe invalidarse. La main() función del archivo ejecutable registra el servicio en el ejecutable con service Control Manager llamando al Run método . La ServiceName propiedad del ServiceBase objeto pasado al Run método debe coincidir con la ServiceName propiedad del instalador de servicio para ese servicio.
Puede usar el sc create comando para instalar servicios que tienen como destino .NET moderno o usar InstallUtil.exe para instalar servicios que tienen como destino .NET Framework.
Nota:
Puede especificar un registro distinto del registro de eventos application para recibir notificaciones de llamadas de servicio, pero ni la AutoLog propiedad ni EventLog pueden escribir en un registro personalizado. Establézcalo AutoLog en false si no desea usar el registro automático.
Constructores
| Nombre | Description |
|---|---|
| ServiceBase() |
Crea una nueva instancia de la ServiceBase clase . |
Campos
| Nombre | Description |
|---|---|
| MaxNameLength |
Indica el tamaño máximo de un nombre de servicio. |
Propiedades
| Nombre | Description |
|---|---|
| AutoLog |
Indica si se deben notificar los comandos Start, Stop, Pause y Continue en el registro de eventos. |
| CanHandlePowerEvent |
Obtiene o establece un valor que indica si el servicio puede controlar las notificaciones de cambios de estado de energía del equipo. |
| CanHandleSessionChangeEvent |
Obtiene o establece un valor que indica si el servicio puede controlar los eventos de cambio de sesión recibidos de una sesión de Terminal Server. |
| CanPauseAndContinue |
Obtiene o establece un valor que indica si el servicio se puede pausar y reanudar. |
| CanRaiseEvents |
Obtiene un valor que indica si el componente puede generar un evento. (Heredado de Component) |
| CanShutdown |
Obtiene o establece un valor que indica si se debe notificar al servicio cuando se apaga el sistema. |
| CanStop |
Obtiene o establece un valor que indica si el servicio se puede detener una vez iniciado. |
| Container |
Obtiene el IContainer objeto que contiene el Componentobjeto . (Heredado de Component) |
| DesignMode |
Obtiene un valor que indica si Component el objeto está actualmente en modo de diseño. (Heredado de Component) |
| EventLog |
Obtiene un registro de eventos que puede usar para escribir notificaciones de llamadas de comando de servicio, como Start y Stop, en el registro de eventos de la aplicación. |
| Events |
Obtiene la lista de controladores de eventos que están asociados a este Componentobjeto . (Heredado de Component) |
| ExitCode |
Obtiene o establece el código de salida del servicio. |
| ServiceHandle |
Obtiene el identificador de control de servicio para el servicio. |
| ServiceName |
Obtiene o establece el nombre corto que se usa para identificar el servicio en el sistema. |
| Site |
Obtiene o establece el ISite objeto de .Component (Heredado de Component) |
Métodos
| Nombre | Description |
|---|---|
| CreateObjRef(Type) |
Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
| Dispose() |
Libera todos los recursos usados por .Component (Heredado de Component) |
| Dispose(Boolean) |
Elimina los recursos (excepto la memoria) usados por .ServiceBase |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetLifetimeService() |
Obsoletos.
Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
| GetService(Type) |
Devuelve un objeto que representa un servicio proporcionado por Component o por su Container. (Heredado de Component) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| InitializeLifetimeService() |
Obsoletos.
Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficial del objeto actual MarshalByRefObject . (Heredado de MarshalByRefObject) |
| OnContinue() |
Cuando se implementa en una clase derivada, OnContinue() se ejecuta cuando el Administrador de control de servicios (SCM) envía un comando Continue al servicio. Especifica las acciones que se deben realizar cuando un servicio reanuda el funcionamiento normal después de pausarse. |
| OnCustomCommand(Int32) |
Cuando se implementa en una clase derivada, OnCustomCommand(Int32) se ejecuta cuando Service Control Manager (SCM) pasa un comando personalizado al servicio. Especifica las acciones que se deben realizar cuando se produce un comando con el valor de parámetro especificado. |
| OnPause() |
Cuando se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM) envía un comando Pause al servicio. Especifica las acciones que se deben realizar cuando un servicio se detiene. |
| OnPowerEvent(PowerBroadcastStatus) |
Cuando se implementa en una clase derivada, se ejecuta cuando el estado de energía del equipo ha cambiado. Esto se aplica a los equipos portátiles cuando entran en modo suspendido, que no es lo mismo que un apagado del sistema. |
| OnSessionChange(SessionChangeDescription) |
Se ejecuta cuando se recibe un evento de cambio desde una sesión de Terminal Server. |
| OnShutdown() |
Cuando se implementa en una clase derivada, se ejecuta cuando el sistema se apaga. Especifica lo que debe ocurrir inmediatamente antes de que se apague el sistema. |
| OnStart(String[]) |
Cuando se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM) envía un comando Start al servicio o cuando se inicia el sistema operativo (para un servicio que se inicia automáticamente). Especifica las acciones que se deben realizar cuando se inicia el servicio. |
| OnStop() |
Cuando se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM) envía un comando Stop al servicio. Especifica las acciones que se deben realizar cuando un servicio deja de ejecutarse. |
| RequestAdditionalTime(Int32) |
Solicita tiempo adicional para una operación pendiente. |
| RequestAdditionalTime(TimeSpan) |
Cuando se llama a este método desde OnStart, OnStop, OnPause o OnContinue, la sugerencia de espera especificada se pasa al Administrador de control de servicios para evitar que el servicio esté marcado como no responde. |
| Run(ServiceBase) |
Registra el archivo ejecutable de un servicio con Service Control Manager (SCM). |
| Run(ServiceBase[]) |
Registra el archivo ejecutable para varios servicios con Service Control Manager (SCM). |
| ServiceMainCallback(Int32, IntPtr) |
Registra el controlador de comandos e inicia el servicio. |
| Stop() |
Detiene el servicio en ejecución. |
| ToString() |
Devuelve un String objeto que contiene el nombre de Component, si existe. Este método no se debe invalidar. (Heredado de Component) |
Eventos
| Nombre | Description |
|---|---|
| Disposed |
Se produce cuando el componente se elimina mediante una llamada al Dispose() método . (Heredado de Component) |