public void AddOnlineUser(UserEntity user) { ConcurrentBag <Guid> listValue; var isSuccess = UsersInNetworksOnline.TryGetValue(user.NetworkId.Value, out listValue); if (!isSuccess) { UsersInNetworksOnline.AddOrUpdate( key: user.NetworkId.Value, addValue: new ConcurrentBag <Guid> { user.Token1 }, updateValueFactory: (guid, list) => { if (list == null) { list = new ConcurrentBag <Guid>(); } list.Add(user.Token1); return(list); }); return; } if (!listValue.Contains(user.Token1)) { listValue.Add(user.Token1); } }
public void RemoveUser(Guid userId) { var networkId = UsersInNetworksOnline.FirstOrDefault(x => x.Value.Contains(userId)).Key; ConcurrentBag <Guid> temp = new ConcurrentBag <Guid>(); foreach (var item in UsersInNetworksOnline[networkId]) { if (item.ToString() != userId.ToString()) { temp.Add(item); } } UsersInNetworksOnline[networkId] = temp; if (!temp.Any()) { UsersInNetworksOnline.TryRemove(networkId, out _); } FilePiecesInUsersOnline.TryRemove(userId, out _); }