Ejemplo n.º 1
0
        protected override async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            try
            {
                // Upgrade database if that is required
                var migrationResult = _migrator.UpgradeDatabase();
                if (migrationResult == MigrationResult.Failure)
                {
                    _logger.LogCritical("Database migration failed");
                    _cancellationTokenSource.Cancel();
                }

                while (!_cancellationToken.IsCancellationRequested)
                {
                    await Task.Run(() => _collectorManager.ProcessGamesAsync(_cancellationToken), _cancellationToken);

                    var isDataWritten = await _collectorManager.TryGetGamesAsync(_cancellationToken);

                    if (!isDataWritten)
                    {
                        await Task.Delay(_timeDelay, _cancellationToken);
                    }
                }
            }
            catch (Exception exception)
            {
                _logger.LogCritical(exception.Message);
                _cancellationTokenSource.Cancel();

                Environment.ExitCode = 1;
            }
            finally
            {
                _cancellationTokenSource.Cancel();
            }
        }