internal void RemoveReference(object referencedObject)
{
lock(_referencedObjects.SyncRoot) {
for(int i = 0; i < _referencedObjects.Count; i++) {
WeakReference wr = (WeakReference) _referencedObjects[i];
if (wr.IsAlive && (wr.Target == referencedObject)) {
_referencedObjects.RemoveAt(i);
}
}
}
}