Сигнал дает мне неправильное количество элементов в списке - PullRequest
0 голосов
/ 26 февраля 2020

Ну, это действительно интересная ошибка в нашем приложении. У нас есть класс для каждого онлайн-игрока, где мы храним его данные

public class Connection
{
    public int PlayerId { get; set; }
    public string ConnectionId { get; set; }
    public List<int> Friends { get; set; }
}

Когда один игрок выходит в оффлайн или онлайн, мы уведомляем других с обновленным счетом онлайн-друзей, например:

public void NotifyMyOnlineFriendsCount(Connection connection)
{
    int onlineFriends = CalculateOnlineFriends(connection.Friends);
    connection.OnlineFriendCount = onlineFriends;
    _hubContext.Clients.Client(connection.ConnectionId).SetOnlineFriends(new FriendsNotification() { OnlineFriendsCount = onlineFriends, TotalFriendsCount = connection.Friends.Count });
}

this is CalculateOnlineFriends:

   public int CalculateOnlineFriends(List<int> friends)
   {
        int onlineFriendsCount = 0;


        if (friends != null && friends.Count > 0)
        {
            lock (_connectionsLocker)
            {
                onlineFriendsCount = connections.Where(o => friends.Contains(o.PlayerId)).Count();
            }
         }


            return onlineFriendsCount;
   }

Иногда TotalFriendsCount отправляет неверных друзей Totalcount. Если реальное число ex: 14, оно отправляет 114 или 214. Где может быть проблема? Спасибо

Обновление: этот метод внутри Singleton, но я не изменяю List<int> Friends во время сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...