在TimedLock中为什么需要SuppressFinalize(tl.leakDetector)?

时间:2010-03-09 19:35:32

标签: c# .net garbage-collection suppressfinalize

http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking

为什么需要这条线?

System.GC.SuppressFinalize(tl.leakDetector);

我原以为终结器不应该被禁止运行警告左侧监视器的代码。

显然我只关注调试版本。

由于

1 个答案:

答案 0 :(得分:1)

该代码正在使leakDetector的终结器生成一个Debug.Fail,因此当该对象完成时,您会在调试器中看到问题。

通过在Dispose()方法中调用SuppressFinalize(..),它会导致该对象仅在未调用Dispose时触发Debug.Fail。