internal void Add(WeakReferenceHandler reference) { lock (this) { _list = new List4(_list, reference); } }
internal void Poll(ObjectContainerBase objectContainer) { List4 remove = null; lock (this){ System.Collections.IEnumerator i = new Iterator4Impl(_list); _list = null; while (i.MoveNext()) { WeakReferenceHandler refHandler = (WeakReferenceHandler)i.Current; if (refHandler.IsAlive) { _list = new List4(_list, refHandler); } else { remove = new List4(remove, refHandler.ObjectReference); } } } System.Collections.IEnumerator j = new Iterator4Impl(remove); while (j.MoveNext()) { lock (objectContainer.Lock()) { if (objectContainer.IsClosed()) { return; } objectContainer.RemoveFromAllReferenceSystems(j.Current); } } }