При использовании WeakReference, как мы можем быть уверены, что цель не собирается между вызовами .IsAlive и .Target?
Например:
if (myWeakReference.IsAlive)
{
// How can we be sure the object is still alive while here?
((MyType)myWeakReference.Target).Foo();
}