private void LoopCache() { if (_shouldExit) { Stop(); return; } /* * lock (_queueLock) * { * for (var i = 0; i < _pokemonQueue.Count; i++) * { * var pokemon = _pokemonQueue[i]; * if (pokemon.ExpireTimestamp <= DateTime.UtcNow.ToTotalSeconds()) * { * // Pokemon expired, remove from queue * _logger.LogDebug($"[{Name}] Pokemon {pokemon.Id} expired, removing from IV queue..."); * _pokemonQueue.Remove(pokemon); * } * } * } */ lock (_scannedLock) { if (_scannedPokemon.Count == 0) { if (_shouldExit) { return; } return; } var first = _scannedPokemon.PopFirst(out _scannedPokemon); var timeSince = DateTime.UtcNow - first.Date; if (timeSince.TotalSeconds < 120) { Thread.Sleep(Convert.ToInt32(120 - timeSince.TotalSeconds) * 1000); if (_shouldExit) { return; } } Pokemon pokemonReal = null; try { pokemonReal = _pokemonRepository.GetByIdAsync(first.Pokemon.Id) .ConfigureAwait(false) .GetAwaiter() .GetResult(); } catch (Exception ex) { _logger.LogError($"[{Name}] Error: {ex}"); if (_shouldExit) { return; } } if (pokemonReal != null) { if (pokemonReal.AttackIV == null) { _logger.LogDebug($"[{Name}] Checked Pokemon {pokemonReal.Id} does not have IV"); AddPokemon(pokemonReal); } else { _logger.LogDebug($"[{Name}] Checked Pokemon {pokemonReal.Id} has IV"); //GotIV(pokemonReal); } } } }