Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Este artigo não se aplica a serviços hospedados no .NET. Para obter o conteúdo mais recente sobre os serviços do Windows que usam Microsoft.Extensions.Hosting.BackgroundService e o modelo Serviço de Trabalho, consulte:
Os aplicativos de serviço do Windows são baseados em uma classe que herda da System.ServiceProcess.ServiceBase classe. Você substitui métodos dessa classe e define a funcionalidade para que eles determinem como seu serviço se comporta.
As principais classes envolvidas na criação de serviços são:
System.ServiceProcess.ServiceBase — Você substitui métodos da classe ServiceBase ao criar um serviço e define o código para estabelecer como o seu serviço opera nessa classe herdada.
System.ServiceProcess.ServiceProcessInstaller e System.ServiceProcess.ServiceInstaller —Você usa essas classes para instalar e desinstalar o serviço.
Além disso, uma classe nomeada ServiceController pode ser usada para manipular o próprio serviço. Essa classe não está envolvida na criação de um serviço, mas pode ser usada para iniciar e parar o serviço, passar comandos para ele e retornar uma série de enumerações.
Definindo o comportamento do seu serviço
Na classe de serviço, você substitui funções de classe base que determinam o que acontece quando o estado do serviço é alterado no Gerenciador de Controle de Serviços. A ServiceBase classe expõe os seguintes métodos, que você pode substituir para adicionar comportamento personalizado.
| Método | Substituir por |
|---|---|
| OnStart | Indique quais ações devem ser tomadas quando o serviço começar a ser executado. Você deve escrever código neste procedimento para que seu serviço execute um trabalho útil. |
| OnPause | Indique o que deve acontecer quando o serviço for pausado. |
| OnStop | Indique o que deve acontecer quando o serviço parar de funcionar. |
| OnContinue | Quando o serviço retomar o funcionamento normal após ser pausado, indique o que deve acontecer. |
| OnShutdown | Indique o que deve acontecer imediatamente antes do encerramento do sistema, se o serviço estiver em execução nesse momento. |
| OnCustomCommand | Indique o que deve acontecer quando o serviço receber um comando personalizado. Para obter mais informações sobre comandos personalizados, consulte MSDN online. |
| OnPowerEvent | Indique como o serviço deve responder quando um evento de gerenciamento de energia é recebido, como bateria fraca ou operação suspensa. |
Observação
Esses métodos representam estados pelos quais o serviço se move no seu tempo de vida; o serviço transita de um estado para o seguinte. Por exemplo, você nunca conseguirá que o serviço responda a um OnContinue comando antes OnStart de ter sido chamado.
Existem várias outras propriedades e métodos que são de interesse. Estes são, entre outros:
O Run método na ServiceBase classe. Este é o principal ponto de entrada para o serviço. Quando você cria um serviço usando o modelo de serviço do Windows, o código é inserido no método do
Mainseu aplicativo para executar o serviço. Este código tem esta aparência:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)Observação
Esses exemplos usam uma matriz do tipo ServiceBase, na qual cada serviço que seu aplicativo contém pode ser adicionado e, em seguida, todos os serviços podem ser executados juntos. No entanto, se estiver a criar apenas um único serviço, poderá optar por não usar o array e simplesmente declarar um novo objeto que herda de ServiceBase e depois executá-lo. Para obter um exemplo, consulte Como escrever serviços programaticamente.
Uma série de propriedades na ServiceBase classe. Eles determinam quais métodos podem ser chamados no seu serviço. Por exemplo, quando a propriedade CanStop é definida para
true, o método OnStop no seu serviço pode ser chamado. Quando a CanPauseAndContinue propriedade é definida comotrue, os OnPause métodos e OnContinue podem ser chamados. Ao definir uma dessas propriedades comotrue, você deve substituir e definir o processamento para os métodos associados.
Você também pode usar um componente chamado ServiceController para se comunicar e controlar o comportamento de um serviço existente.