ServiceBase Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece uma classe base para um serviço que existirá como parte de um aplicativo de serviço. ServiceBase deve ser derivado da criação de uma nova classe de serviço.
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
- Derivado
Comentários
Deriva de quando definir sua classe de ServiceBase serviço em um aplicativo de serviço. Qualquer serviço útil substitui os métodos e OnStop os OnStart métodos. Para funcionalidade adicional, você pode substituir OnPause e OnContinue com um comportamento específico em resposta a alterações no estado do serviço.
Um serviço é um executável de execução longa que não dá suporte a uma interface do usuário e que pode não ser executado na conta de usuário conectada. O serviço pode ser executado sem que nenhum usuário esteja conectado ao computador.
Por padrão, os serviços são executados na conta do Sistema, que não é a mesma da conta de Administrador. Você não pode alterar os direitos da conta do sistema. Como alternativa, você pode usar uma ServiceProcessInstaller para especificar uma conta de usuário na qual o serviço será executado.
Um executável pode conter mais de um serviço, mas deve conter um separado ServiceInstaller para cada serviço. A ServiceInstaller instância registra o serviço com o sistema. O instalador também associa cada serviço a um log de eventos que você pode usar para registrar comandos de serviço. A main() função no executável define quais serviços devem ser executados. 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.
Quando você inicia um serviço, o sistema localiza o executável e executa o OnStart método para esse serviço, contido no executável. No entanto, executar o serviço não é o mesmo que executar o executável. O executável carrega apenas o serviço. O serviço é acessado (por exemplo, iniciado e parado) por meio do Service Control Manager.
O executável chama o ServiceBase construtor da classe derivada na primeira vez que você chama Iniciar no serviço. O OnStart método de tratamento de comando é chamado imediatamente após a execução do construtor. O construtor não é executado novamente após a primeira vez em que o serviço foi carregado, portanto, é necessário separar o processamento executado pelo construtor daquele executado por OnStart. Todos os recursos que podem ser liberados devem OnStop ser criados em OnStart. A criação de recursos no construtor impede que eles sejam criados corretamente se o serviço for iniciado novamente após OnStop a liberação dos recursos.
O SCM (Service Control Manager) fornece uma maneira de interagir com o serviço. Você pode usar o SCM para passar comandos Iniciar, Parar, Pausar, Continuar ou personalizados no serviço. O SCM usa os valores de CanStop e CanPauseAndContinue para determinar se o serviço aceita comandos Parar, Pausar ou Continuar. Stop, Pause e Continue são habilitados nos menus de contexto do SCM somente se a propriedade CanStop correspondente ou CanPauseAndContinue estiver true na classe de serviço. Se habilitado, o comando é passado para o serviço e OnStop, OnPauseou OnContinue é chamado. Se CanStop, CanShutdownou CanPauseAndContinue for false, o método de tratamento de comando correspondente (como OnStop) não for processado, mesmo se você tiver implementado o método.
Você pode usar a ServiceController classe para fazer programaticamente o que o SCM faz usando uma interface do usuário. Você pode automatizar as tarefas disponíveis no console. Se CanStop, CanShutdownou CanPauseAndContinue for true , mas você não implementou um método de tratamento de comando correspondente (como OnStop) o sistema gerará uma exceção e ignorará o comando.
Você não precisa implementar OnStart, OnStopou qualquer outro método em ServiceBase. No entanto, o comportamento do serviço é descrito em OnStart, portanto, no mínimo, esse membro deve ser substituído. A main() função do executável registra o serviço no executável com o Service Control Manager chamando o Run método. A ServiceName propriedade do ServiceBase objeto passado para o Run método deve corresponder à ServiceName propriedade do instalador de serviço para esse serviço.
Você pode usar o sc create comando para instalar serviços direcionados ao .NET moderno ou usar InstallUtil.exe para instalar serviços direcionados ao .NET Framework.
Observação
Você pode especificar um log diferente do log de eventos do aplicativo para receber a notificação de chamadas de serviço, mas nem a AutoLog propriedade nem a EventLog propriedade podem gravar em um log personalizado. Defina AutoLog como false se você não quiser usar o log automático.
Construtores
| Nome | Description |
|---|---|
| ServiceBase() |
Cria uma nova instância da ServiceBase classe. |
Campos
| Nome | Description |
|---|---|
| MaxNameLength |
Indica o tamanho máximo de um nome de serviço. |
Propriedades
| Nome | Description |
|---|---|
| AutoLog |
Indica se os comandos Iniciar, Parar, Pausar e Continuar devem ser relatados no log de eventos. |
| CanHandlePowerEvent |
Obtém ou define um valor que indica se o serviço pode lidar com notificações de alterações de status de energia do computador. |
| CanHandleSessionChangeEvent |
Obtém ou define um valor que indica se o serviço pode lidar com eventos de alteração de sessão recebidos de uma sessão do Terminal Server. |
| CanPauseAndContinue |
Obtém ou define um valor que indica se o serviço pode ser pausado e retomado. |
| CanRaiseEvents |
Obtém um valor que indica se o componente pode gerar um evento. (Herdado de Component) |
| CanShutdown |
Obtém ou define um valor que indica se o serviço deve ser notificado quando o sistema está sendo desligado. |
| CanStop |
Obtém ou define um valor que indica se o serviço pode ser interrompido depois de iniciado. |
| Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
| DesignMode |
Obtém um valor que indica se o Component está no modo de design no momento. (Herdado de Component) |
| 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. |
| Events |
Obtém a lista de manipuladores de eventos anexados a isso Component. (Herdado de Component) |
| ExitCode |
Obtém ou define o código de saída do serviço. |
| ServiceHandle |
Obtém o identificador de controle de serviço para o serviço. |
| ServiceName |
Obtém ou define o nome curto usado para identificar o serviço para o sistema. |
| Site |
Obtém ou define o ISiteComponent. (Herdado de Component) |
Métodos
| Nome | Description |
|---|---|
| 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. (Herdado de MarshalByRefObject) |
| Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Descarta os recursos (além da memória) usados ServiceBasepelo . |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou por sua Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| OnContinue() |
Quando implementado em uma classe derivada, OnContinue() é executado quando um comando Continue é enviado ao serviço pelo SCM (Service Control Manager). Especifica as ações a serem executadas quando um serviço retoma o funcionamento normal após ser pausado. |
| OnCustomCommand(Int32) |
Quando implementado em uma classe derivada, OnCustomCommand(Int32) é executado quando o SCM (Service Control Manager) passa um comando personalizado para o serviço. Especifica ações a serem executadas quando ocorrer um comando com o valor do parâmetro especificado. |
| OnPause() |
Quando implementado em uma classe derivada, é executado quando um comando Pause é enviado ao serviço pelo SCM (Service Control Manager). Especifica as ações a serem executadas quando um serviço é pausado. |
| OnPowerEvent(PowerBroadcastStatus) |
Quando implementado em uma classe derivada, é executado quando o status de energia do computador é alterado. Isso se aplica a computadores portáteis quando eles entram no modo suspenso, o que não é o mesmo que um desligamento do sistema. |
| OnSessionChange(SessionChangeDescription) |
É executado quando um evento de alteração é recebido de uma sessão do Terminal Server. |
| OnShutdown() |
Quando implementado em uma classe derivada, é executado quando o sistema está sendo desligado. Especifica o que deve ocorrer imediatamente antes do sistema ser desligado. |
| OnStart(String[]) |
Quando implementado em uma classe derivada, é executado quando um comando Iniciar é enviado ao serviço pelo SCM (Service Control Manager) ou quando o sistema operacional é iniciado (para um serviço que é iniciado automaticamente). Especifica as ações a serem executadas quando o serviço é iniciado. |
| OnStop() |
Quando implementado em uma classe derivada, é executado quando um comando Stop é enviado ao serviço pelo SCM (Service Control Manager). Especifica as ações a serem executadas quando um serviço para de ser executado. |
| RequestAdditionalTime(Int32) |
Solicita tempo adicional para uma operação pendente. |
| RequestAdditionalTime(TimeSpan) |
Quando esse método é chamado de OnStart, OnStop, OnPause ou OnContinue, a dica de espera especificada é passada para o Gerenciador de Controle de Serviço para evitar que o serviço seja marcado como não respondendo. |
| Run(ServiceBase) |
Registra o executável para um serviço com o SCM (Service Control Manager). |
| Run(ServiceBase[]) |
Registra o executável para vários serviços com o SCM (Service Control Manager). |
| ServiceMainCallback(Int32, IntPtr) |
Registra o manipulador de comandos e inicia o serviço. |
| Stop() |
Interrompe o serviço em execução. |
| ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
Eventos
| Nome | Description |
|---|---|
| Disposed |
Ocorre quando o componente é descartado por uma chamada para o Dispose() método. (Herdado de Component) |