System.Diagnostics.TraceSource._pruneCachedTraceSources C# (CSharp) Method

_pruneCachedTraceSources() private static method

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