KbtterWPF.DirectMessage.RefreshDMList C# (CSharp) Method

RefreshDMList() public method

public RefreshDMList ( ) : Task
return Task
        public Task RefreshDMList()
        {
            return Task.Run(() =>
            {
                dmlist = new ConcurrentDictionary<TwitterUser, List<TwitterDirectMessage>>();
                users = new HashSet<TwitterUser>();
                var iedm = svc.ListDirectMessagesReceived(new ListDirectMessagesReceivedOptions { IncludeEntities = true, Count = 400 });
                foreach (var i in iedm)
                {
                    if (!users.Contains(i.Sender))
                    {
                        lock (sync)
                        {
                            users.Add(i.Sender);
                            dmlist[i.Sender] = new List<TwitterDirectMessage>();
                            dmlist[i.Sender].Add(i);
                        }
                    }
                    else
                    {
                        lock (sync) dmlist[i.Sender].Add(i);
                    }
                }

                iedm = svc.ListDirectMessagesSent(new ListDirectMessagesSentOptions { Count = 400, IncludeEntities = true });

                foreach (var i in iedm)
                {

                    if (!users.Contains(i.Recipient))
                    {
                        lock (sync)
                        {
                            users.Add(i.Recipient);
                            dmlist[i.Recipient] = new List<TwitterDirectMessage>();
                            dmlist[i.Recipient].Add(i);
                        }
                    }
                    else
                    {
                        lock (sync) dmlist[i.Recipient].Add(i);
                    }
                }
                foreach (var i in dmlist)
                {
                    i.Value.Sort((x, y) => x.CreatedDate.CompareTo(y.CreatedDate));
                }
            });

        }