Ejemplo n.º 1
0
        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);
            }
        }