Вопрос

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

Зачем нужна эта строка?

System.GC.SuppressFinalize(tl.leakDetector);

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

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

Спасибо

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top