Many background workers never stop on SIGTERM.
✔ Real Fix
Bind cancellation token:
public Task StartAsync(CancellationToken ct)
{
_ = DoWorkAsync(ct);
return Task.CompletedTask;
}
💡 Super Tip
In Program.cs:
builder.Services.AddHostedService<MyWorker>();
builder.Services.Configure<HostOptions>(o =>
{
o.ShutdownTimeout = TimeSpan.FromSeconds(20);
});
Most devs don’t know this exists → massively improves controlled shutdown.
