Como: Escrever serviços de forma programática

Aviso

Esta documentação não é para a versão mais recente do Serviço do Windows. Para obter o conteúdo mais recente nos Serviços do Windows usando BackgroundService e o modelo do 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

  1. Criar um projeto vazio e crie uma referência aos namespaces necessários seguindo estas etapas:

    1. Em Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências e clique em Adicionar Referência.

    2. Na guia .NET Framework, role até System.dll e clique em Selecionar.

    3. Role até System.ServiceProcess.dll e clique em Selecionar.

    4. Clique em OK.

  2. Adicione uma classe e configure-a para ser herdada de ServiceBase:

    public class UserService1 : System.ServiceProcess.ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Adicione o código a seguir para configurar sua classe de serviço:

    public UserService1()
    {
        this.ServiceName = "MyService2";
        this.CanStop = true;
        this.CanPauseAndContinue = true;
        this.AutoLog = true;
    }
    
    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    
  4. 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()
    {
        System.ServiceProcess.ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. 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
    
  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. Instale o serviço. Para obter mais informações, confira Como instalar e desinstalar serviços.

Confira também