public void RemoveUser(ClaimsPrincipal user, Action <long> onGameFinish, Action <long> onTurnTimeout) { lock (lobbyLock) { if (!HasUser(user)) { return; } var removeUser = players .Where((item) => item.GetUserLoginID() == user.GetUserLoginID()) .FirstOrDefault(); players.Remove(removeUser); hosts.Remove(removeUser); if (hosts.Count == 0 && players.Count > 0) { hosts.Add(players[0]); } if (InGame()) { GameLogicController.GameUserLeave(removeUser, onTurnTimeout, onGameFinish); } } }