Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ServiceBase (Clase)

Proporciona una clase base para un servicio que existirá como parte de una aplicación de servicio. Deberá derivarse de ServiceBase cuando se cree una nueva clase de servicio.

Espacio de nombres:  System.ServiceProcess
Ensamblado:  System.ServiceProcess (en System.ServiceProcess.dll)

public class ServiceBase : Component

El tipo ServiceBase expone los siguientes miembros.

  NombreDescripción
Método públicoServiceBaseCrea una nueva instancia de la clase ServiceBase.
Arriba

  NombreDescripción
Propiedad públicaAutoLogIndica si los comandos Iniciar, Detener, Pausar y Continuar deben notificarse en el registro de eventos.
Propiedad públicaCanHandlePowerEventObtiene o establece un valor que indica si el servicio puede controlar notificaciones de los cambios de estado de la alimentación del equipo.
Propiedad públicaCanHandleSessionChangeEventObtiene o establece un valor que indica si el servicio puede controlar eventos de cambio de sesión recibidos de una sesión de Terminal Server.
Propiedad públicaCanPauseAndContinueObtiene o establece un valor que indica si se puede pausar y reanudar el servicio.
Propiedad protegidaCanRaiseEventsObtiene un valor que indica si el componente puede generar un evento. (Se hereda de Component).
Propiedad públicaCanShutdownObtiene o establece un valor que indica si se debe informar al servicio de que el sistema se está cerrando.
Propiedad públicaCanStopObtiene o establece un valor que indica si puede detenerse el servicio una vez se ha iniciado.
Propiedad públicaContainerObtiene IContainer que contiene Component. (Se hereda de Component).
Propiedad protegidaDesignModeObtiene un valor que indica si Component está actualmente en modo de diseño. (Se hereda de Component).
Propiedad públicaEventLogObtiene un registro de eventos que se puede utilizar para escribir la notificación de llamadas de comandos de servicio, como Iniciar y Detener, en el registro de eventos de aplicación.
Propiedad protegidaEventsObtiene la lista de controladores de eventos asociados a Component. (Se hereda de Component).
Propiedad públicaExitCodeObtiene o establece el código de salida para el servicio.
Propiedad protegidaServiceHandleObtiene el identificador del control de servicios para el servicio.
Propiedad públicaServiceNameObtiene o establece el nombre corto utilizado para identificar el servicio en el sistema.
Propiedad públicaSiteObtiene o establece ISite de Component. (Se hereda de Component).
Arriba

  NombreDescripción
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDispose()Libera todos los recursos utilizados por Component. (Se hereda de Component).
Método protegidoDispose(Boolean)Elimina los recursos (que no sean memoria) utilizados por ServiceBase. (Invalida a Component.Dispose(Boolean)).
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalizeLibera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el objeto Component durante la recolección de elementos no utilizados. (Se hereda de Component).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoGetServiceDevuelve un objeto que representa el servicio suministrado por Component o por Container. (Se hereda de Component).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método protegidoOnContinueSi se implementa en una clase derivada, OnContinue se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) envía un comando Continuar al servicio. Especifica las acciones que deben realizarse cuando se reanuda el funcionamiento normal de un servicio después de una pausa.
Método protegidoOnCustomCommandSi se implementa en una clase derivada, OnCustomCommand se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) pasa un comando personalizado al servicio. Especifica las acciones que deben realizarse cuando se ejecuta un comando con el valor de parámetro especificado.
Método protegidoOnPauseSi se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) envía un comando Pausar al servicio. Especifica las acciones que deben realizarse cuando un servicio realiza una pausa.
Método protegidoOnPowerEventSi se implementa en una clase derivada, se ejecuta cuando el estado de la alimentación del equipo cambia. Esto se aplica a equipos portátiles cuando entran en modo suspendido, que no es lo mismo que un cierre de sistema.
Método protegidoOnSessionChangeSe ejecuta cuando se recibe un evento de cambio de una sesión de Terminal Server.
Método protegidoOnShutdownSi se implementa en una clase derivada, se ejecuta cuando el sistema se está cerrando. Especifica lo que tiene que suceder inmediatamente antes de que se cierre el sistema.
Método protegidoOnStartSi se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) envía un comando Iniciar al servicio o cuando se inicia el sistema operativo (en el caso de un servicio que se inicia de forma automática). Especifica las acciones que deben realizarse cuando se inicia el servicio.
Método protegidoOnStopSi se implementa en una clase derivada, se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) envía a un comando Detener al servicio. Especifica las acciones que deben realizarse cuando un servicio deja de ejecutarse.
Método públicoRequestAdditionalTimeSolicita tiempo adicional para una operación pendiente.
Método públicoMiembro estáticoRun(ServiceBase)Registra el ejecutable para un servicio con el Administrador de control de servicios (SCM, Service Control Manager).
Método públicoMiembro estáticoRun(ServiceBase[])Registra el ejecutable para varios servicios con el Administrador de control de servicios (SCM, Service Control Manager).
Método públicoServiceMainCallbackInfraestructura. Registra el controlador de comandos e inicia el servicio.
Método públicoStopDetiene el servicio en ejecución.
Método públicoToStringDevuelve un objeto String que contiene el nombre del objeto Component, en caso de que exista. Este método no debe reemplazarse. (Se hereda de Component).
Arriba

  NombreDescripción
Evento públicoDisposedSe produce cuando el componente se elimina mediante una llamada al método Dispose. (Se hereda de Component).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoMaxNameLengthIndica el tamaño máximo de un nombre de servicio.
Arriba

Derive de ServiceBase al definir la clase de servicio de una aplicación de servicio. Cualquier servicio útil reemplaza los métodos OnStart y OnStop. Para obtener funcionalidad adicional, puede reemplazar OnPause y OnContinue por un comportamiento específico en respuesta a cambios en el estado del servicio.

Un servicio es un ejecutable de ejecución larga que no admite una interfaz de usuario y que puede no ejecutarse en la cuenta de usuario que ha iniciado la sesión. El servicio puede ejecutarse sin que ningún usuario haya iniciado una sesión en el equipo.

De forma predeterminada, los servicios se ejecutan en la cuenta de sistema, que no es igual que la cuenta de administrador. No puede cambiar los derechos de la cuenta de sistema. De modo alternativo, puede utilizar ServiceProcessInstaller para especificar una cuenta de usuario en la que se ejecutará el servicio.

Un ejecutable puede contener más de un servicio, pero tiene que contener un componente ServiceInstaller independiente para cada uno de los servicios. La instancia de ServiceInstaller registra el servicio en el sistema. Asimismo, el instalador asocia cada servicio a un registro de eventos que puede utilizar para registrar comandos de servicio. La función main() del ejecutable define qué servicios deben ejecutarse. El directorio de trabajo actual del servicio es el directorio del sistema, no el directorio en el que está situado el ejecutable.

Cuando se inicia un servicio, el sistema busca el ejecutable y ejecuta el método OnStart de ese servicio, contenido dentro del ejecutable. Sin embargo, ejecutar el servicio no equivale a ejecutar el ejecutable. El ejecutable solamente carga el servicio. Se obtiene acceso al servicio (por ejemplo, lo inicia y lo detiene) mediante el Administrador de control de servicios.

El ejecutable llama al constructor de la clase derivada de ServiceBase la primera vez que se llama a Start para el servicio. Se llama al método de control de comandos OnStart inmediatamente después de que se ejecute el constructor. El constructor no se vuelve a ejecutar después de la primera vez que se ha cargado el servicio, por lo que es necesario separar el procesamiento realizado por el constructor del realizado por OnStart. Cualquier recurso que OnStop pueda liberar tiene que crearse en OnStart. La creación de recursos en el constructor impide que estos se creen adecuadamente si se inicia de nuevo el servicio una vez que OnStop ha liberado los recursos.

El Administrador de control de servicios (SCM, Service Control Manager) permite la interacción con el servicio. Puede utilizar el SCM para pasar comandos Iniciar, Detener, Pausar, Continuar o comandos personalizados al servicio. El SCM utiliza los valores de las propiedades CanStop y CanPauseAndContinue para determinar si el servicio acepta los comandos Detener, Pausar o Continuar. Detener, Pausar y Continuar sólo estarán habilitados en los menús contextuales del SCM si la propiedad CanStop o CanPauseAndContinue correspondiente es true en la clase de servicio. Si está habilitado, el comando se pasa al servicio y se llama a OnStop, OnPause o OnContinue. Si la propiedad CanStop, CanShutdown o CanPauseAndContinue es false, no se procesará el método de control de comandos correspondiente (como OnStop), aunque se haya implementado el método.

Puede utilizar la clase ServiceController para realizar mediante programación lo que el SCM realiza mediante una interfaz de usuario. Es posible automatizar las tareas disponibles en la consola. Si la propiedad CanStop, CanShutdown o CanPauseAndContinue es true, pero no implementó el método de control de comandos correspondiente (como OnStop), el sistema produce una excepción y omite el comando.

No tiene que implementar el método OnStart, OnStop ni ningún otro método en ServiceBase. Sin embargo, el comportamiento del servicio se describe en OnStart, por lo que, como mínimo, tendrá que reemplazarse este miembro. La función main() del ejecutable registra el servicio en el ejecutable con el Administrador de control de servicios; para ello, llama al método Run. La propiedad ServiceName del objeto ServiceBase pasada al método Run debe coincidir con la propiedad ServiceName del instalador de ese servicio.

Puede utilizar InstallUtil.exe para instalar servicios en el sistema.

NotaNota

Es posible especificar un registro que no sea el registro de eventos de aplicación para recibir la notificación de llamadas de servicio, pero ni la propiedad AutoLog ni la propiedad EventLog pueden escribir en un registro personalizado. Establezca AutoLog en false si no desea utilizar el registro automático.

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft