Partilhar via


Como: Escrever serviços programaticamente

Nota

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:

Se você optar por não usar o modelo de projeto de Serviço do Windows, poderá escrever seus próprios serviços configurando a herança e outros elementos de infraestrutura por conta própria. Ao criar um serviço programaticamente, você deve executar várias etapas que, de outra forma, o modelo manipularia para você:

  • Você deve configurar sua classe de serviço para herdar da ServiceBase classe.

  • Você deve criar um Main método para seu projeto de serviço que define os serviços a serem executados e chama o Run método neles.

  • Você deve substituir os OnStart procedimentos e OnStop e preencher qualquer código que você deseja que eles sejam executados.

Para escrever um serviço programaticamente

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

    1. No 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. Desloque-se para System.ServiceProcess.dll e clique em Selecionar.

    4. Clique em OK.

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

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Adicione o seguinte código 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
    
  4. Crie um Main método para sua classe e use-o para definir o serviço que sua 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
    
  5. Substitua o OnStart método e defina qualquer processamento que você deseja que ocorra 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 você deseja definir o processamento personalizado e escreva código para determinar as ações que o serviço deve executar em cada caso.

  7. Adicione os instaladores necessários para seu aplicativo de serviço. Para obter mais informações, consulte Como adicionar instaladores ao seu aplicativo de serviço.

  8. Crie seu projeto selecionando Build Solution no menu Build .

    Nota

    Nã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 seu serviço. Para obter um exemplo, consulte Passo a passo: Criando um aplicativo de serviço do Windows no Component Designer.

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

Consulte também