コード例 #1
0
        public void Update(GroupDescription description)
        {
            Name        = description.Name;
            DisplayName = description.DisplayName;
            Joined      = description.Member ?? false;

            var newMembers = new List <IUser>(from name in description.MemberNames select client.GetUser(name));

            if (members != null)
            {
                var oldMembers = new List <IUser>(members);
                foreach (var member in newMembers)
                {
                    if (!oldMembers.Contains(member))
                    {
                        members.Add(member);
                        UserAdded.SafeInvoke(this, new UserEventArgs(member));
                    }
                }
                foreach (var member in oldMembers)
                {
                    if (!newMembers.Contains(member))
                    {
                        members.Remove(member);
                        UserRemoved.SafeInvoke(this, new UserEventArgs(member));
                    }
                }
            }
            else
            {
                members = newMembers;
            }

            Changed.SafeInvoke(this, new EventArgs());
        }
コード例 #2
0
        void OnUserRemoved(object sender, UserEventArgs e)
        {
            participants.Remove(GetParticipant(e.User));
            UserRemoved.SafeInvoke(this, e);
            if (participants.Count == 0)
            {
                Ended.SafeInvoke(this, new EventArgs());

                events.UserAdded    -= OnUserAdded;
                events.UserChanged  -= OnUserChanged;
                events.UserRemoved  -= OnUserRemoved;
                events.UserTyping   -= OnUserTyping;
                events.ChatReceived -= OnChatReceived;
            }
        }
コード例 #3
0
 public void RaiseUserRemoved(UserEventArgs e)
 {
     UserRemoved.SafeInvoke(this, e);
 }