В TimedLock зачем нужен SuppressFinalize(tl.leakDetector)?

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

Зачем нужна эта линия?

System.GC.SuppressFinalize (tl.leakDetector);

Я бы подумал, что финализатор не должен подавляться для запуска кода, который оповещает оставленный монитор.

Очевидно, я смотрю только на отладочную версию.

Спасибо

1 ответ

Решение

Этот код работает, делая финализатор для leakDetector вызвать Debug.Fail, поэтому вы видите проблемы в отладчике, когда этот объект завершен.

Помещая вызов SuppressFinalize(..) в метод Dispose(), он вызывает тот объект, который вызывает Debug.Fail только тогда, когда Dispose НЕ вызывается.

Другие вопросы по тегам