Para criar um novo projeto do Serviço de Trabalho com o Visual Studio, selecione Arquivo>Novo>Projeto....Na caixa de diálogo Criar um novo projeto, procure por "Serviço de Trabalho" e selecione Modelo de Serviço de Trabalhador. Se você preferir usar a CLI do .NET, abra seu terminal favorito em um diretório de trabalho. Execute o comando e substitua o dotnet new pelo nome do <Project.Name> projeto desejado.
.NET CLI
dotnetnew worker --name<Project.Name>
Para obter mais informações sobre o comando .NET CLI new worker service project, consulte dotnet new worker.
Gorjeta
Se você estiver usando o Visual Studio Code, poderá executar comandos da CLI do .NET a partir do terminal integrado. Para obter mais informações, consulte Visual Studio Code: Integrated Terminal.
Criar serviços com escopo
Para usar serviços com escopo em um , crie um BackgroundServiceescopo. Nenhum escopo é criado para um serviço hospedado por padrão. O serviço em segundo plano com escopo contém a lógica da tarefa em segundo plano.
A interface anterior define um único DoWorkAsync método. Para definir a implementação padrão:
O serviço é assíncrono. O DoWorkAsync método retorna um Taskarquivo . Para fins de demonstração, espera-se um atraso de dez segundos no DoWorkAsync método.
O serviço hospedado cria um escopo para resolver o serviço em segundo plano com escopo para chamar seu DoWorkAsync método. DoWorkAsync Devolve um Task, que é aguardado em ExecuteAsync:
Reescrever a classe Worker
Substitua a classe existente Worker pelo seguinte código C# e renomeie o arquivo para ScopedBackgroundService.cs:
No código anterior, um escopo explícito é criado e a implementação é resolvida a IScopedProcessingService partir da fábrica de escopo do serviço de injeção de dependência. A instância de serviço resolvida tem escopo e seu DoWorkAsync método é aguardado.
Substitua o conteúdo do arquivo .cs programa modelo com o seguinte código C#:
Para executar o aplicativo do Visual Studio, selecione F5 ou selecione a opção de menu Depurar Iniciar Depuração>. Se você estiver usando a CLI do .NET, execute o dotnet run comando no diretório de trabalho:
.NET CLI
dotnetrun
Para obter mais informações sobre o comando .NET CLI run, consulte dotnet run.
Deixe o aplicativo ser executado por um pouco para gerar vários incrementos de contagem de execução. Você verá uma saída semelhante à seguinte:
Se estiver executando o aplicativo de dentro do Visual Studio, selecione Depurar Parar Depuração>.... Como alternativa, selecione Ctrl + C na janela do console para sinalizar o cancelamento.
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Entenda e implemente a injeção de dependência em um aplicativo ASP.NET Core. Use o contêiner de serviço interno do ASP.NET Core para gerenciar dependências. Registre serviços com o contêiner de serviço.
Saiba como implementar um IHostedService personalizado e usar implementações existentes em C#. Descubra várias implementações, modelos e padrões de serviço de trabalho.
Arquitetura de microsserviços .NET para aplicativos .NET em contêineres | Entenda as novas opções para usar IHostedService e BackgroundService para implementar tarefas em segundo plano no .NET Core de microsserviços.
Saiba mais sobre a alteração de quebra do .NET 6 nas bibliotecas principais do .NET onde exceções não tratadas de um BackgroundService são registradas em vez de perdidas.