Background Services
Trabalho em segundo plano com IHostedService e BackgroundService no ASP.NET Core
Regra principal: Background services rodam fora do pipeline HTTP. Sao registrados via
AddHostedService<T> e gerenciados pelo host β iniciam com a app e param gracefully no shutdown. Ciclo de vida de um Hosted Service
O host chama StartAsync de cada servico registrado na ordem de registro. BackgroundService dispara ExecuteAsync automaticamente. No shutdown, o host chama StopAsync e sinaliza o CancellationToken.
| Conceito | Descricao |
|---|---|
| IHostedService | Interface base com StartAsync e StopAsync. Voce controla tudo manualmente. |
| BackgroundService | Classe abstrata que implementa IHostedService. Voce so precisa implementar ExecuteAsync. |
| CancellationToken | Sinalizado quando o host esta parando. Seu loop deve respeitar stoppingToken. |
| AddHostedService | Registra o servico como Singleton gerenciado pelo host. Nao use AddSingleton. |
| Scoped services | Background services sao Singleton β para usar Scoped (ex: DbContext), crie um scope com IServiceScopeFactory. |
Cuidado: Excecoes nao tratadas em
ExecuteAsync param silenciosamente o servico no .NET 6+. A partir do .NET 8, o BackgroundServiceExceptionBehavior padrao e StopHost β a app inteira para.