Como: Escrever serviços de forma programática
Observação
Este artigo não se aplica aos serviços hospedados no .NET. Para obter o conteúdo mais recente sobre os Serviços Windows usando Microsoft.Extensions.Hosting.BackgroundService e o modelo de Serviço de Trabalho, confira:
Quando você opta por não usar o modelo de projeto de Serviço Windows, é possível escrever seus próprios serviços configurando a herança e outros elementos de infraestrutura por conta própria. Ao criar um serviço de forma programática, você precisa executar várias etapas que o modelo executaria para você:
Você precisa configurar a classe de serviço para ser herdada da classe ServiceBase.
Você precisa criar um método
Main
para seu projeto de serviço que defina os serviços a serem executados e chame o método Runneles.Você precisa substituir os procedimentos OnStart e OnStop e preencher os códigos que desejar que eles executem.
Para escrever um serviço de forma programático
Criar um projeto vazio e crie uma referência aos namespaces necessários seguindo estas etapas:
Em Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências e clique em Adicionar Referência.
Na guia .NET Framework, role até System.dll e clique em Selecionar.
Role até System.ServiceProcess.dll e clique em Selecionar.
Clique em OK.
Adicione uma classe e configure-a para ser herdada de ServiceBase:
public class UserService1 : ServiceBase { }
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
Adicione o código a seguir para configurar sua classe de serviço:
public UserService1() { ServiceName = "MyService2"; CanStop = true; CanPauseAndContinue = true; AutoLog = true; }
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
Crie um método
Main
para sua classe e use-o para definir o serviço que a classe conterá.userService1
é o nome da classe:public static void Main() { ServiceBase.Run(new UserService1()); }
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
Substitua o método OnStart e defina o processamento que deverá ocorrer quando o serviço for iniciado.
protected override void OnStart(string[] args) { // Insert code here to define processing. }
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
Substitua quaisquer outros métodos para os quais deseje definir um processamento personalizado e escreva o código para determinar as ações que o serviço deve executar em cada caso.
Adicionar os instaladores necessários para seu aplicativo de serviço. Para obter mais informações, confira Como adicionar instaladores no seu aplicativo de serviço.
Compile o projeto selecionando Compilar Solução no menu Compilar.
Observação
Pressione F5 para executar seu projeto. Você não pode executar um projeto de serviço dessa maneira.
Crie um projeto de instalação e as ações personalizadas para instalar o serviço. Para obter um exemplo, confira Passo a passo: criando um aplicativo de Serviço Windows no designer de componentes.
Instale o serviço. Para obter mais informações, confira Como instalar e desinstalar serviços.