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.

Host iniciaTask.RunToken canceladoCleanup completoApp StartStartAsyncExecuteAsyncloop continuoStopAsyncApp Shutdown
ConceitoDescricao
IHostedServiceInterface base com StartAsync e StopAsync. Voce controla tudo manualmente.
BackgroundServiceClasse abstrata que implementa IHostedService. Voce so precisa implementar ExecuteAsync.
CancellationTokenSinalizado quando o host esta parando. Seu loop deve respeitar stoppingToken.
AddHostedServiceRegistra o servico como Singleton gerenciado pelo host. Nao use AddSingleton.
Scoped servicesBackground 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.