ServiceBase ServiceBase ServiceBase ServiceBase Class

Definição

Fornece uma classe base para um serviço que existirá como parte de um aplicativo de serviço.Provides a base class for a service that will exist as part of a service application. ServiceBase deve ser derivado do momento da criação de uma nova classe de serviço.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
Herança

Comentários

Derivar de ServiceBase ao definir sua classe de serviço em um aplicativo de serviço.Derive from ServiceBase when defining your service class in a service application. Substituições de qualquer serviço útil a OnStart e OnStop métodos.Any useful service overrides the OnStart and OnStop methods. Para obter funcionalidade adicional, você pode substituir OnPause e OnContinue com comportamento específico em resposta a alterações no estado do serviço.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Um serviço é um executável de longa execução que não oferece suporte a uma interface do usuário, e que não pode ser executado sob a conta de logon do usuário.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. O serviço pode ser executado sem qualquer usuário que está sendo conectado ao computador.The service can run without any user being logged on to the computer.

Por padrão, os serviços executados na conta do sistema, que não é o mesmo que a conta de administrador.By default, services run under the System account, which is not the same as the Administrator account. Você não pode alterar os direitos da conta do sistema.You cannot change the rights of the System account. Como alternativa, você pode usar um ServiceProcessInstaller para especificar uma conta de usuário sob a qual o serviço será executado.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Um executável pode conter mais de um serviço, mas deve conter um separado ServiceInstaller para cada serviço.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. O ServiceInstaller instância registra o serviço com o sistema.The ServiceInstaller instance registers the service with the system. O instalador também associa cada serviço com um log de eventos que você pode usar para registrar comandos de serviço.The installer also associates each service with an event log that you can use to record service commands. O main() função no executável define quais serviços devem ser executados.The main() function in the executable defines which services should run. O diretório de trabalho atual do serviço é o diretório do sistema, não o diretório no qual o executável está localizado.The current working directory of the service is the system directory, not the directory in which the executable is located.

Quando você inicia um serviço, o sistema localiza o executável e executa o OnStart método para o serviço, contido no executável.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. No entanto, que executa o serviço não é o mesmo que o executável.However, running the service is not the same as running the executable. O executável carrega apenas o serviço.The executable only loads the service. O serviço é acessado por meio do Gerenciador de controle de serviço (por exemplo, iniciado e interrompido).The service is accessed (for example, started and stopped) through the Service Control Manager.

O executável chama o ServiceBase derivado de tempo de construtor o primeiro da classe é chamar o início do serviço.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. O OnStart método de manipulação de comandos é chamado imediatamente depois que o construtor é executado.The OnStart command-handling method is called immediately after the constructor executes. O construtor não é executado novamente após a primeira vez em que o serviço tiver sido carregado, portanto, é necessário separar o processamento executado pelo construtor daquele executadas pelo 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 os recursos que podem ser liberados pelo OnStop deve ser criado em OnStart.Any resources that can be released by OnStop should be created in OnStart. Criar recursos no construtor impede que eles sejam criadas corretamente se o serviço for iniciado novamente após OnStop lançou os recursos.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

O Gerenciador de controle de serviço (SCM) fornece uma maneira de interagir com o serviço.The Service Control Manager (SCM) provides a way to interact with the service. Você pode usar o SCM para passar o iniciar, parar, pausar, continuar ou comandos personalizados para o serviço.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. O SCM usa os valores de CanStop e CanPauseAndContinue para determinar se o serviço aceita parar, pausar ou continuar comandos.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Interromper, pausar e continuar são habilitados somente se do SCM contexto menus a propriedade correspondente CanStop ou CanPauseAndContinue é true da classe de serviço.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. Se habilitada, o comando é passado para o serviço, e OnStop, OnPause, ou OnContinue é chamado.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Se CanStop, CanShutdown, ou CanPauseAndContinue é false, o método de manipulação de comandos correspondente (como OnStop) não será processada, mesmo se você tiver implementado o 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.

Você pode usar o ServiceController faz de classe para fazer o que o SCM de forma programática usando uma interface do usuário.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Você pode automatizar as tarefas disponíveis no console do.You can automate the tasks available in the console. Se CanStop, CanShutdown, ou CanPauseAndContinue é true , mas não implementou um método de manipulação de comandos correspondente (como OnStop) o sistema gerará uma exceção e ignora o 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.

Você não precisa implementar OnStart, OnStop, ou qualquer outro método ServiceBase.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. No entanto, o comportamento do serviço é descrito em OnStart, portanto, no mínimo, esse membro deve ser substituído.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. O main() função do executável que registra o serviço no executável com o Gerenciador de controle de serviço chamando o 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. O ServiceName propriedade do ServiceBase objeto passado para o Run deve corresponder ao ServiceName propriedade do instalador do serviço para o serviço.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Você pode usar InstallUtil.exe para instalar os serviços em seu sistema.You can use InstallUtil.exe to install services on your system.

Observação

Você pode especificar um log diferente do log de eventos do aplicativo para receber uma notificação de chamadas de serviço, mas não a AutoLog nem o EventLog propriedade pode gravar em um log 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. Definir AutoLog para false se você não quiser usar o registro em log automático.Set AutoLog to false if you do not want to use automatic logging.

Construtores

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

Cria uma nova instância da classe ServiceBase.Creates a new instance of the ServiceBase class.

Campos

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

Indica o tamanho máximo para um nome de serviço.Indicates the maximum size for a service name.

Propriedades

AutoLog AutoLog AutoLog AutoLog

Indica se os comandos Start, Stop, Pause e Continue devem ser relatados no log de eventos.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

Obtém ou define um valor que indica se o serviço pode manipular notificações de alterações de status de energia do computador.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

Obtém ou define um valor que indica se o serviço pode manipular eventos de alteração de sessão recebidos de uma sessão do servidor Host da Sessão da Área de Trabalho Remota.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

Obtém ou define um valor que indica se o serviço pode estar em pausa e retomado.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Obtém um valor que indica se o componente pode acionar um evento.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

Obtém ou define um valor que indica se o serviço deve ser notificado quando o sistema está sendo desligado.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

Obtém ou define um valor que indica se o serviço pode ser interrompido depois de ser iniciado.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

Obtém o IContainer que contém o Component.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Obtém um valor que indica se o Component está no modo de design no momento.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Obtém um log de eventos que você pode usar para gravar a notificação de chamadas de comando de serviço, como iniciar e parar, no log de eventos do aplicativo.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

Obtém a lista de manipuladores de eventos que estão anexados a este Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

Obtém ou define o código de saída do serviço.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

Obtém a alça de controle de serviço para o serviço.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

Obtém ou define o nome curto usado para identificar o serviço no sistema.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

Obtém ou define o ISite do Component.Gets or sets the ISite of the Component.

(Inherited from Component)

Métodos

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

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um 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 os recursos usados pelo Component.Releases all resources used by the Component.

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

Descarta os recursos (exceto a memória) usados pelo ServiceBase.Disposes of the resources (other than memory) used by the ServiceBase.

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

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

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

Serve como a função de hash padrão.Serves as the default hash function.

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

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.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)

Retorna um objeto que representa um serviço fornecido pelo Component ou pelo seu Container.Returns an object that represents a service provided by the Component or by its Container.

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

Obtém o Type da instância atual.Gets the Type of the current instance.

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

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Cria uma cópia superficial do objeto MarshalByRefObject atual.Creates a shallow copy of the current MarshalByRefObject object.

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

Quando implementado em uma classe derivada, OnContinue() é executado quando o comando Continuar é enviado para o serviço pelo SCM (Gerenciador de Controle de Serviço).When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Especifica as ações a serem tomadas quando um serviço retoma o funcionamento normal após estar em pausa.Specifies actions to take when a service resumes normal functioning after being paused.

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

Quando implementado em uma classe derivada, OnCustomCommand(Int32) é executado quando o SCM (Gerenciador de Controle de Serviço) passa um comando personalizado para o serviço.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Especifica as ações a serem aditadas quando ocorrer um comando com o valor do parâmetro especificado.Specifies actions to take when a command with the specified parameter value occurs.

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

Quando implementado em uma classe derivada, é executado quando o comando Pausar é enviado para o serviço pelo SCM (Gerenciador de Controle de Serviço).When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Especifica ações a serem tomadas quando a execução for colocada em pausa.Specifies actions to take when a service pauses.

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

Quando implementada em uma classe derivada, será executada quando o status de energia do computador for alterado.When implemented in a derived class, executes when the computer's power status has changed. Isso se aplica a computadores laptop quando entram no modo suspenso, que não é o mesmo que um desligamento do 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)

Executa quando um evento de alteração é proveniente de uma sessão do servidor Host da Sessão da Área de Trabalho Remota.Executes when a change event is received from a Terminal Server session.

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

Quando implementado em uma classe derivada, é executado quando o sistema é desligado.When implemented in a derived class, executes when the system is shutting down. Especifica o que deve ocorrer imediatamente antes do desligamento do sistema.Specifies what should occur immediately prior to the system shutting down.

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

Quando implementado em uma classe derivada, é executado quando um comando Iniciar é enviado para o serviço pelo SCM (Gerenciador de Controle de Serviço) ou quando o sistema operacional é iniciado (para um serviço que inicia automaticamente).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 ações a serem tomadas quando o serviço for iniciado.Specifies actions to take when the service starts.

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

Quando implementado em uma classe derivada, é executado quando o comando Parar é enviado para o serviço pelo SCM (Gerenciador de Controle de Serviço).When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Especifica ações a serem tomadas quando a execução do serviço parar.Specifies actions to take when a service stops running.

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

Solicita tempo adicional para uma operação pendente.Requests additional time for a pending operation.

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

Registra o executável para um serviço com o Gerenciador de Controle de Serviço (SCM).Registers the executable for a service with the Service Control Manager (SCM).

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

Registra o executável para vários serviços com o SCM (Gerenciador de Controle de Serviço).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 o manipulador de comandos e inicia o serviço.Registers the command handler and starts the service.

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

Interrompe o serviço em execução.Stops the executing service.

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

Retorna um String que contém o nome do Component, se houver.Returns a String containing the name of the Component, if any. Esse método não deve ser substituído.This method should not be overridden.

(Inherited from Component)

Eventos

Disposed Disposed Disposed Disposed

Ocorre quando o componente é disposto por uma chamada para o método Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

Aplica-se a

Veja também