private void CleanPendingLists(object sender, ElapsedEventArgs e) { var matchesToRemove = PendingMatches.Values.Where(p => { var timespan = DateTime.Now - p.CreatedDate; return(timespan.TotalSeconds >= 30); }).ToList(); foreach (var matchToRemove in matchesToRemove) { PendingMatches.Remove(matchToRemove.MatchID, out var _); _logger.LogInformation($"Removed match : {matchToRemove} from pending list as it's been not used for the last 30seconds."); } var usersToRemove = PendingGameUsers.Keys.Where(p => { var timespan = DateTime.Now - p.CreatedTime; return(timespan.TotalSeconds >= 30); }).ToList(); foreach (var userToRemove in usersToRemove) { PendingGameUsers.Remove(userToRemove, out var _); _logger.LogInformation($"Removed user : {userToRemove} from pending list as it's been not used for the last 30seconds."); } }