ServiceBase ServiceBase ServiceBase ServiceBase Class

Definición

Proporciona una clase base para un servicio que existirá como parte de una aplicación de servicio.Provides a base class for a service that will exist as part of a service application. Deberá derivarse de ServiceBase cuando se cree una nueva clase de servicio.ServiceBase must be derived from when creating a new service class.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Herencia

Comentarios

Derivar de ServiceBase al definir la clase de servicio en una aplicación de servicio.Derive from ServiceBase when defining your service class in a service application. Cualquier servicio útil reemplaza el OnStart y OnStop métodos.Any useful service overrides the OnStart and OnStop methods. Para obtener funcionalidad adicional, puede invalidar OnPause y OnContinue con un comportamiento específico en respuesta a cambios en el estado del servicio.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Un servicio es un ejecutable de larga ejecución que no es compatible con una interfaz de usuario y que podría no ejecutarse bajo la cuenta de usuario con sesión iniciada.A service is a long-running executable that does not support a user interface, and which might not run under the logged-on user account. El servicio puede ejecutarse sin que ningún usuario que se inició sesión en el equipo.The service can run without any user being logged on to the computer.

De forma predeterminada, los servicios se ejecutan bajo la cuenta del sistema, que no es igual que la cuenta de administrador.By default, services run under the System account, which is not the same as the Administrator account. No se puede cambiar los derechos de la cuenta del sistema.You cannot change the rights of the System account. Como alternativa, puede usar un ServiceProcessInstaller para especificar una cuenta de usuario bajo la que se ejecutará el servicio.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Un ejecutable puede contener más de un servicio, pero debe contener un independiente ServiceInstaller para cada servicio.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. El ServiceInstaller instancia registra el servicio con el sistema.The ServiceInstaller instance registers the service with the system. El instalador también asocia cada servicio con un registro de eventos que puede usar para registrar comandos de servicio.The installer also associates each service with an event log that you can use to record service commands. El main() función en el archivo ejecutable define qué servicios deben ejecutarse.The main() function in the executable defines which services should run. El directorio de trabajo actual del servicio es el directorio del sistema, no el directorio donde se encuentra el archivo ejecutable.The current working directory of the service is the system directory, not the directory in which the executable is located.

Cuando se inicia un servicio, el sistema busca el ejecutable y se ejecuta el OnStart método para el servicio, incluido en el archivo ejecutable.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Sin embargo, que ejecuta el servicio no es igual que la ejecución del ejecutable.However, running the service is not the same as running the executable. El archivo ejecutable carga solo el servicio.The executable only loads the service. Se accede al servicio (por ejemplo, iniciar y detener) mediante el Administrador de Control de servicios.The service is accessed (for example, started and stopped) through the Service Control Manager.

El ejecutable llama el ServiceBase derivada tiempo el primer constructor de la clase se llama a Start para el servicio.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. El OnStart se llama al método de control de comandos inmediatamente después de que se ejecuta el constructor.The OnStart command-handling method is called immediately after the constructor executes. No se ejecuta el constructor 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 del realizado por OnStart.The constructor is not executed again after the first time the service has been loaded, so it is necessary to separate the processing performed by the constructor from that performed by OnStart. Todos los recursos que se pueden liberar por OnStop debe crearse en OnStart.Any resources that can be released by OnStop should be created in OnStart. Creación de recursos en el constructor impide que se creen correctamente si el servicio se inicia después de volver a OnStop ha liberado los recursos.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

El Administrador de Control de servicios (SCM) proporciona una manera de interactuar con el servicio.The Service Control Manager (SCM) provides a way to interact with the service. Puede utilizar el SCM para pasar iniciar, detener, pausar, continuar o comandos personalizados en el servicio.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. El SCM utiliza los valores de CanStop y CanPauseAndContinue para determinar si el servicio acepta detener, pausar o continuar comandos.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Detener, pausar y continuar están habilitadas en solo si en del SCM contexto menús la propiedad correspondiente CanStop o CanPauseAndContinue es true en la clase de servicio.Stop, Pause, and Continue are enabled in the SCM's context menus only if the corresponding property CanStop or CanPauseAndContinue is true in the service class. Si está habilitada, el comando se pasa al servicio, y OnStop, OnPause, o OnContinue se llama.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Si CanStop, CanShutdown, o CanPauseAndContinue es false, el método de control de comandos correspondiente (como OnStop) no se procesarán, incluso si ha implementado el método.If CanStop, CanShutdown, or CanPauseAndContinue is false, the corresponding command-handling method (such as OnStop) will not be processed, even if you have implemented the method.

Puede usar el ServiceController clase hacer mediante programación qué SCM realiza mediante una interfaz de usuario.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Puede automatizar las tareas disponibles en la consola.You can automate the tasks available in the console. Si CanStop, CanShutdown, o CanPauseAndContinue es true pero no ha implementado un método de control de comandos correspondiente (como OnStop) el sistema produce una excepción y omite el comando.If CanStop, CanShutdown, or CanPauseAndContinue is true but you have not implemented a corresponding command-handling method (such as OnStop) the system throws an exception and ignores the command.

No es necesario implementar OnStart, OnStop, o cualquier otro método en ServiceBase.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Sin embargo, se describe el comportamiento del servicio en OnStart, por lo que como mínimo, se debe invalidar este miembro.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. El main() función del ejecutable registra el servicio en el archivo ejecutable con el Administrador de Control de servicio mediante una llamada a la Run método.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. El ServiceName propiedad de la ServiceBase objeto pasa a la Run método debe coincidir con el ServiceName propiedad del instalador del servicio para ese servicio.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Puede usar InstallUtil.exe para instalar servicios del sistema.You can use InstallUtil.exe to install services on your system.

Nota

Puede especificar un registro distinto del registro de eventos de aplicación para recibir la notificación de llamadas de servicio, pero ninguna de ellas el AutoLog ni EventLog propiedad puede escribir en un registro personalizado.You can specify a log other than the Application event log to receive notification of service calls, but neither the AutoLog nor the EventLog property can write to a custom log. Establecer AutoLog a false si no desea utilizar el registro automático.Set AutoLog to false if you do not want to use automatic logging.

Constructores

ServiceBase() ServiceBase() ServiceBase() ServiceBase()

Crea una nueva instancia de la clase ServiceBase.Creates a new instance of the ServiceBase class.

Campos

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

Indica el tamaño máximo de un nombre de servicio.Indicates the maximum size for a service name.

Propiedades

AutoLog AutoLog AutoLog AutoLog

Indica si los comandos Iniciar, Detener, Pausar y Continuar deben notificarse en el registro de eventos.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

Obtiene o establece un valor que indica si el servicio puede controlar notificaciones de los cambios de estado de la alimentación del equipo.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

Obtiene 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.Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue

Obtiene o establece un valor que indica si se puede pausar y reanudar el servicio.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

Obtiene o establece un valor que indica si se debe informar al servicio de que el sistema se está cerrando.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

Obtiene o establece un valor que indica si puede detenerse el servicio una vez se ha iniciado.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

Obtiene IContainer que contiene Component.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Obtiene un valor que indica si Component está actualmente en modo de diseño.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Obtiene 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.Gets an event log you can use to write notification of service command calls, such as Start and Stop, to the Application event log.

Events Events Events Events

Obtiene la lista de controladores de eventos asociados a Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

Obtiene o establece el código de salida para el servicio.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

Obtiene el identificador del control de servicios para el servicio.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

Obtiene o establece el nombre corto utilizado para identificar el servicio en el sistema.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

Obtiene o establece el ISite de Component.Gets or sets the ISite of the Component.

(Inherited from Component)

Métodos

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Libera todos los recursos que usa Component.Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Se deshace de los recursos (distintos de la memoria) que usa ServiceBase.Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OnContinue() OnContinue() OnContinue() OnContinue()

Si 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.When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Especifica las acciones que deben realizarse cuando se reanuda el funcionamiento normal de un servicio después de una pausa.Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32)

Si se implementa en una clase derivada, OnCustomCommand(Int32) se ejecuta cuando el Administrador de control de servicios (SCM, Service Control Manager) pasa un comando personalizado al servicio.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Especifica las acciones que deben realizarse cuando se ejecuta un comando con el valor de parámetro especificado.Specifies actions to take when a command with the specified parameter value occurs.

OnPause() OnPause() OnPause() OnPause()

Si 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.When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Especifica las acciones que deben realizarse cuando un servicio realiza una pausa.Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus)

Si se implementa en una clase derivada, se ejecuta cuando el estado de la alimentación del equipo cambia.When implemented in a derived class, executes when the computer's power status has changed. Esto se aplica a equipos portátiles cuando entran en modo suspendido, que no es lo mismo que un cierre de sistema.This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription)

Se ejecuta cuando se recibe un evento de cambio de una sesión de Terminal Server.Executes when a change event is received from a Terminal Server session.

OnShutdown() OnShutdown() OnShutdown() OnShutdown()

Si se implementa en una clase derivada, se ejecuta cuando el sistema se está cerrando.When implemented in a derived class, executes when the system is shutting down. Especifica lo que tiene que suceder inmediatamente antes de que se cierre el sistema.Specifies what should occur immediately prior to the system shutting down.

OnStart(String[]) OnStart(String[]) OnStart(String[]) OnStart(String[])

Si 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).When implemented in a derived class, executes when a Start command is sent to the service by the Service Control Manager (SCM) or when the operating system starts (for a service that starts automatically). Especifica las acciones que deben realizarse cuando se inicia el servicio.Specifies actions to take when the service starts.

OnStop() OnStop() OnStop() OnStop()

Si 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.When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Especifica las acciones que deben realizarse cuando un servicio deja de ejecutarse.Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32)

Solicita tiempo adicional para una operación pendiente.Requests additional time for a pending operation.

Run(ServiceBase) Run(ServiceBase) Run(ServiceBase) Run(ServiceBase)

Registra el ejecutable para un servicio con el Administrador de control de servicios (SCM, Service Control Manager).Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[])

Registra el ejecutable para varios servicios con el Administrador de control de servicios (SCM, Service Control Manager).Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr)

Registra el controlador de comandos e inicia el servicio.Registers the command handler and starts the service.

Stop() Stop() Stop() Stop()

Detiene el servicio en ejecución.Stops the executing service.

ToString() ToString() ToString() ToString()

Devuelve una String que contiene el nombre del Component, si existe.Returns a String containing the name of the Component, if any. Este método no se debe invalidar.This method should not be overridden.

(Inherited from Component)

Eventos

Disposed Disposed Disposed Disposed

Se produce cuando el componente se elimina mediante una llamada al método Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

Se aplica a

Consulte también: