IHostedService(BackgroundService)的启动和停止顺序
一句话总结: 按照Add顺序启动, 先启动, 后停止.
Host 源代码
public async Task StartAsync(CancellationToken cancellationToken = default(CancellationToken))
{
_hostedServices = Services.GetService<IEnumerable<IHostedService>>();
foreach (IHostedService hostedService in _hostedServices)
{
await hostedService.StartAsync(combinedCancellationToken).ConfigureAwait(continueOnCapturedContext: false);
}
}
public async Task StopAsync(CancellationToken cancellationToken = default(CancellationToken))
{
foreach (IHostedService item3 in _hostedServices.Reverse())
{
await item3.StopAsync(token).ConfigureAwait(continueOnCapturedContext: false);
}
}