System.Diagnostics.Switch._pruneCachedSwitches C# (CSharp) Method

_pruneCachedSwitches() private static method

private static _pruneCachedSwitches ( ) : void
return void
        private static void _pruneCachedSwitches()
        {
            lock (s_switches)
            {
                if (s_LastCollectionCount != GC.CollectionCount(2))
                {
                    List<WeakReference> buffer = new List<WeakReference>(s_switches.Count);
                    for (int i = 0; i < s_switches.Count; i++)
                    {
                        Switch s = ((Switch)s_switches[i].Target);
                        if (s != null)
                        {
                            buffer.Add(s_switches[i]);
                        }
                    }
                    if (buffer.Count < s_switches.Count)
                    {
                        s_switches.Clear();
                        s_switches.AddRange(buffer);
                        s_switches.TrimExcess();
                    }
                    s_LastCollectionCount = GC.CollectionCount(2);
                }
            }
        }