private async Task ListUsersUpdate(List <BookMyFood.ServiceChat.ServerUser> users) { if (!updating) { updating = true; ClientMaintaining.Update() ; try { var me = users[users.FindIndex(x => x.ID == ClientMaintaining.ID)]; users.Remove(me); users.Insert(0, me); } catch (Exception e) { Log.Instance.W(this, e.Message); updating = false; return; } var cp = new SequenceEqualityComparer <UserItem>(new UserComparer()); TempUsersList.Clear(); //await Task.Run(async () => { Thread.Sleep(3000); }); foreach (var user in users) { TempUsersList.Add(new UserItem(user)); //await Task.Run(async () => { TempUsersList.Add(new UserItem(user)); }); //await // Task.Run( () = { // TempUsersList.Add(new UserItem(user)); //} } if (!cp.Equals(TempUsersList, UsersList) || Math.Abs(ClientMaintaining.CurrentDiscount - discount) > 0) { UsersList.Clear(); foreach (var user in users) { UsersList.Add(new UserItem(user)); } ; } updating = false; } }
public bool Equals(SequenceEqualityComparer <T> other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(this.comparer.Equals(other.comparer)); }
public bool Equals(UserItem x, UserItem y) { //Check whether the compared objects reference the same data. if (Object.ReferenceEquals(x, y)) { return(true); } //Check whether any of the compared objects is null. if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null)) { return(false); } var oc = new SequenceEqualityComparer <BookMyFood.ServiceChat.Item>(new ItemComparer()); bool orderEq = false; if (x.pickedUser.Order != null && y.pickedUser.Order != null) { orderEq = oc.Equals(x.pickedUser.Order.Items, y.pickedUser.Order.Items); } return(x.pickedUser.ID == y.pickedUser.ID && x.pickedUser.MissionForClient == y.pickedUser.MissionForClient && x.pickedUser.Name == y.pickedUser.Name && x.pickedUser.Ready == y.pickedUser.Ready && x.pickedUser.isLeader == y.pickedUser.isLeader && orderEq ); }