.NET垃圾收集器“竞争条件”

时间:2012-03-09 15:50:16

标签: c# .net garbage-collection

考虑到使用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,压制就没有效果。

1 个答案:

答案 0 :(得分:1)

如果lWInstance.Target终结器正在执行,我希望lInstance为空。即WeakReference只会返回对有效的非最终目标的引用。