考虑到使用C#的以下场景:
Someclass lInstance = new SomeClass();
System.WeakReference lWInstance = new System.WeakReference(lInstance);
lInstance = null;
System.GC.Collect();
System.GC.SuppressFinalize(lWInstance.Target);
想象一下,当SuppressFinalize执行时,GC线程已经在Someclass的Finalizer代码中。
问题是会发生什么?我假设一旦GC线程进入Finalizer,压制就没有效果。
答案 0 :(得分:1)
如果lWInstance.Target
终结器正在执行,我希望lInstance
为空。即WeakReference
只会返回对有效的非最终目标的引用。