/// <inheritdoc/> public async Task CloseGameAsync(int finishedPlayerBoardId) { await statisticsService.UpdateStatisticsAsync(finishedPlayerBoardId); await repository.DeleteAsync(finishedPlayerBoardId); await unitOfWork.CommitAsync(); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogDebug($"StatisticsCollectorService is starting."); stoppingToken.Register(() => _logger.LogDebug($"StatisticsCollectorService is stopping.")); while (!stoppingToken.IsCancellationRequested) { //key - cellid. value - hit count Dictionary <int, int> cellUsage = new Dictionary <int, int>(); List <int> gameCells = _statisticsService.TryDequeueGameStatistics(); while (gameCells != null) { gameCells.ForEach(cell => { if (cellUsage.ContainsKey(cell)) { cellUsage[cell]++; } else { cellUsage.Add(cell, 1); } }); gameCells = _statisticsService.TryDequeueGameStatistics(); } if (cellUsage.Count > 0) { _logger.LogDebug($"StatisticsCollectorService - statistics updated."); await _statisticsService.UpdateStatisticsAsync(cellUsage); } await Task.Delay(_options.BackgroundStatisticsCollectorDelayTime, stoppingToken); } }