Есть ли смысл отслеживать классическое поле bool disposed
на другом потоковом типе с целью условного метания ObjectDisposedException
в начале всех первичных открытых методов?IDisposable, ObjectDisposedException и типы потокобезопасности
Я видел этот образец, рекомендованный в нескольких местах в Интернете, но я не уверен, что авторы правильно его используют, поэтому этот вопрос предполагает, что они есть.
В таком случае кажется, что единственный способ гарантировать, что условие disposed
истинно за пределами оценки условия, заключается в использовании механизма синхронизации, такого как lock(), по всему телу каждого открытого элемента, включая Dispose (bool). Разве это не сделало бы тип эффективно однопоточным снова?
И если это правда, тогда не было бы смысла его использовать, и поэтому вы не можете полагаться на механизм ObjectDisposedException в некоторых реализациях IDisposable - так почему бы нам ЭТО использовать этот механизм, если он не является " необходимо?
====
Я думаю IDisposable и ObjectDisposedException просто не идут вместе для поточно-типов.
См. Также: http://stackoverflow.com/questions/170028/how-would-you-simplfy-entering-and-exiting-a-readerwriterlock –