private async Task CleanExpiresCoreAsync()

in src/Microsoft.Azure.SignalR.Emulator/HubEmulator/GroupManager.cs [196:233]


        private async Task CleanExpiresCoreAsync()
        {
            while (true)
            {
                await Task.Delay(1000);
                List<(string user, string group)> list = null;
                lock (_expires)
                {
                    if (_expires.Count == 0)
                    {
                        return;
                    }
                    var now = DateTimeOffset.Now;
                    foreach (var pair in _expires)
                    {
                        if (pair.Value < now)
                        {
                            if (list == null)
                            {
                                list = new List<(string user, string group)> { pair.Key };
                            }
                            else
                            {
                                list.Add(pair.Key);
                            }
                        }
                    }
                    if (list != null)
                    {
                        foreach (var item in list)
                        {
                            _expires.Remove(item);
                            _userGroupMap.Remove(item.user, item.group);
                        }
                    }
                }
            }
        }