public async Task Generate() { try { var totalDataCount = _settings.SiteMapDataSettings.Count; if (totalDataCount == 0) { return; } var fetchDataTask = new Task <IEnumerable <string> > [totalDataCount]; for (int i = 0; i < totalDataCount; i++) { var mapSettings = _settings.SiteMapDataSettings[i]; _settings.Logger.LogInformation($"Create job for table {mapSettings.Table}"); var backgroundJob = new BackgroundJob(_settings.Storage, mapSettings, _settings.Serializer, _settings.FileHandlerHelper, _settings.Logger ); fetchDataTask[i] = backgroundJob.Process(); } _settings.Logger.LogInformation($"Start all jobs. Waiting results..."); var result = await Task.WhenAll(fetchDataTask); FinalizeSitemap(result); } catch (Exception ex) { _settings.Logger.LogError("Generate()", ex); } }