Зачем нужен SuppressFinalize(tl.leakDetector) в TimedLock?
-
18-09-2019 - |
Вопрос
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
Зачем нужна эта строка?
System.GC.SuppressFinalize(tl.leakDetector);
Я бы подумал, что финализатор не следует подавлять для запуска кода, который предупреждает об оставшемся мониторе.
Очевидно, я смотрю только на отладочную версию.
Спасибо
Решение
Этот код работает, создавая финализатор для leakDetector
вызвать Debug.Fail, поэтому вы увидите проблемы в отладчике, когда этот объект будет завершен.
Помещая вызов SuppressFinalize(..) в метод Dispose(), этот объект вызывает запуск Debug.Fail только тогда, когда Dispose НЕ вызывается.
Не связан с StackOverflow