private async Task StartService( IBackgroundService service, List <IBackgroundService> startedServices, CancellationTokenSource cancellationTokenSource) { _logger.ServiceStarting(service); var stopwatch = Stopwatch.StartNew(); try { await service.StartAsync(cancellationTokenSource.Token); startedServices.Add(service); _logger.ServiceStarted(service, stopwatch.Elapsed); } catch (Exception error) { _logger.ServiceStartFailed(service, stopwatch.Elapsed, error); cancellationTokenSource.Cancel(false); throw; } }