private void ClearReferences() { ArrayList oldList = _referencedObjects; _referencedObjects = new ArrayList(); for(int i = 0; i < oldList.Count; i++) { WeakReference wr = (WeakReference) oldList[i]; if (wr.IsAlive) { ClearReference(wr.Target); } } }