ServiceBase Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma classe base para um serviço que existirá como parte de uma aplicação de serviço. ServiceBase deve ser derivado de quando se cria 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
Observações
Deriva de ServiceBase ao definir a sua classe de serviço numa aplicação de serviço. Qualquer serviço útil sobrepõe-se aos OnStart métodos e OnStop e Para funcionalidades adicionais, pode sobrepor OnPause e OnContinue com comportamentos específicos em resposta a alterações no estado do serviço.
Um serviço é um executável de longa duração que não suporta uma interface de utilizador e que pode não ser executado sob a conta de utilizador iniciada. O serviço pode correr sem que nenhum utilizador esteja ligado ao computador.
Por defeito, os serviços funcionam sob a conta do Sistema, que não é o mesmo que a conta do Administrador. Não pode alterar os direitos da conta do Sistema. Em alternativa, pode usar a ServiceProcessInstaller para especificar uma conta de utilizador sob a qual o serviço irá funcionar.
Um executável pode conter mais do que um serviço, mas deve conter um separado ServiceInstaller para cada serviço. A ServiceInstaller instância regista o serviço junto do sistema. O instalador também associa cada serviço a um registo de eventos que pode usar para registar comandos de serviço. A main() função no executável define quais os serviços que devem ser executados. O diretório de trabalho atual do serviço é o diretório do sistema, não o diretório onde o executável está localizado.
Quando inicia um serviço, o sistema localiza o executável e executa o OnStart método desse serviço, contido no executável. No entanto, executar o serviço não é o mesmo que executar o executável. O executável só carrega o serviço. O serviço é acedido (por exemplo, iniciado e parado) através do Service Control Manager.
O executável chama o ServiceBase construtor da classe derivada na primeira vez que chama Start no serviço. O OnStart método de gestão de comandos é chamado imediatamente após a execução do construtor. O construtor não é executado novamente após a primeira vez que o serviço foi carregado, pelo que é necessário separar o processamento realizado pelo construtor daquele realizado por OnStart. Quaisquer recursos que possam ser libertados por OnStop devem ser criados em OnStart. Criar recursos no construtor impede que sejam criados corretamente se o serviço for reiniciado depois OnStop de ter libertado os recursos.
O Gestor de Controlo de Serviço (SCM) fornece uma forma de interagir com o serviço. Pode usar o SCM para passar comandos Start, Stop, Pause, Continue ou personalizados para o serviço. O SCM utiliza os valores de CanStop e CanPauseAndContinue para determinar se o serviço aceita comandos Stop, Pause ou Continue. Parar, Pausar e Continuar estão ativados nos menus contextuais do SCM apenas se a propriedade CanStop correspondente ou CanPauseAndContinue estiver true na classe de serviço. Se ativado, o comando é passado para o serviço, e OnStop, OnPause, ou OnContinue é chamado. Se CanStop, CanShutdown, ou CanPauseAndContinue for false, o método correspondente de manipulação de comandos (como OnStop) não será processado, mesmo que tenha implementado o método.
Podes usar a ServiceController classe para fazer programaticamente o que o SCM faz usando uma interface de utilizador. Podes automatizar as tarefas disponíveis na consola. Se CanStop, CanShutdown, ou CanPauseAndContinue for true mas não implementou um método correspondente de manuseamento de comandos (como OnStop), o sistema lança uma exceção e ignora o comando.
Não é necessário implementar OnStart, OnStop, ou qualquer outro método em ServiceBase. No entanto, o comportamento do serviço é descrito em OnStart, pelo que, no mínimo, este membro deve ser sobreposto. A main() função do executável regista o serviço no executável junto do Service Control Manager, chamando o Run método. A ServiceName propriedade do ServiceBase objeto passada ao Run método deve corresponder à ServiceName propriedade do instalador do serviço para esse serviço.
Pode usar o comando sc create para instalar serviços direcionados a .NET modernos, ou usar InstallUtil.exe para instalar serviços que visem .NET Framework.
Note
Pode especificar um registo diferente do registo de eventos da aplicação para receber notificações de chamadas de serviço, mas nem a AutoLogEventLog propriedade nem a propriedade podem escrever num registo personalizado. Defina AutoLog para false se não quiser usar registo automático.
Construtores
| Name | Description |
|---|---|
| ServiceBase() |
Cria uma nova instância da ServiceBase classe. |
Campos
| Name | Description |
|---|---|
| MaxNameLength |
Indica o tamanho máximo para um nome de serviço. |
Propriedades
| Name | Description |
|---|---|
| AutoLog |
Indica se deve reportar comandos Iniciar, Parar, Pausar e Continuar no registo de eventos. |
| CanHandlePowerEvent |
Recebe ou define um valor que indica se o serviço consegue lidar com notificações de alterações no estado da energia do computador. |
| CanHandleSessionChangeEvent |
Recebe ou define um valor que indica se o serviço consegue lidar com eventos de alteração de sessão recebidos de uma sessão do Terminal Server. |
| CanPauseAndContinue |
Recebe 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 |
Recebe ou define um valor que indica se o serviço deve ser notificado quando o sistema está a desligar-se. |
| CanStop |
Recebe 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á atualmente em modo de design. (Herdado de Component) |
| EventLog |
Obtém um registo de eventos que pode usar para escrever notificações de chamadas de comandos de serviço, como Iniciar e Parar, no registo de eventos da Aplicação. |
| Events |
Obtém a lista de gestores de eventos que estão ligados a isto Component. (Herdado de Component) |
| ExitCode |
Recebe ou define o código de saída do serviço. |
| ServiceHandle |
Fica com o controlo do serviço para o serviço. |
| ServiceName |
Recebe ou define o nome abreviado usado para identificar o serviço ao sistema. |
| Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
Métodos
| Name | Description |
|---|---|
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta todos os recursos utilizados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Elimina os recursos (exceto memória) usados pelo ServiceBase. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Devolve um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| OnContinue() |
Quando implementado numa classe derivada, OnContinue() executa-se quando um comando Continuar é enviado ao serviço pelo Service Control Manager (SCM). Especifica as ações a tomar quando um serviço retoma o funcionamento normal após a pausa. |
| OnCustomCommand(Int32) |
Quando implementado numa classe derivada, OnCustomCommand(Int32) executa-se quando o Service Control Manager (SCM) passa um comando personalizado ao serviço. Especifica ações a tomar quando ocorre um comando com o valor do parâmetro especificado. |
| OnPause() |
Quando implementado numa classe derivada, executa-se quando um comando Pause é enviado ao serviço pelo Service Control Manager (SCM). Especifica ações a tomar quando um serviço fica em pausa. |
| OnPowerEvent(PowerBroadcastStatus) |
Quando implementado numa classe derivada, executa-se quando o estado de energia do computador mudou. Isto aplica-se aos computadores portáteis quando entram em modo suspenso, o que não é o mesmo que um desligamento do sistema. |
| OnSessionChange(SessionChangeDescription) |
Executa-se quando um evento de alteração é recebido de uma sessão do Terminal Server. |
| OnShutdown() |
Quando implementado numa classe derivada, executa-se quando o sistema está a desligar-se. Especifica o que deve acontecer imediatamente antes do desligamento do sistema. |
| OnStart(String[]) |
Quando implementado numa classe derivada, executa-se quando um comando Start é enviado ao serviço pelo Service Control Manager (SCM) ou quando o sistema operativo inicia (para um serviço que inicia automaticamente). Especifica as ações a tomar quando o serviço começa. |
| OnStop() |
Quando implementado numa classe derivada, é executado quando um comando Stop é enviado ao serviço pelo Service Control Manager (SCM). Especifica as ações a tomar quando um serviço deixa de funcionar. |
| RequestAdditionalTime(Int32) |
Solicita tempo adicional para uma operação pendente. |
| Run(ServiceBase) |
Regista o executável de um serviço junto do Service Control Manager (SCM). |
| Run(ServiceBase[]) |
Regista o executável de múltiplos serviços no Service Control Manager (SCM). |
| ServiceMainCallback(Int32, IntPtr) |
Regista o gestor de comandos e inicia o serviço. |
| Stop() |
Para a notificação em execução. |
| ToString() |
Devolve a String contendo o nome do Component, se existir. Este método não deve ser ultrapassado. (Herdado de Component) |
evento
| Name | Description |
|---|---|
| Disposed |
Ocorre quando o componente é eliminado por uma chamada ao Dispose() método. (Herdado de Component) |