Есть ли смысл отслеживать классическое поле bool disposed
в другом поточно-безопасном типе с целью условного выброса ObjectDisposedException
в начале всех основных открытых методов?
Я видел этот шаблон, рекомендуемый в нескольких местах онлайн, но я не уверен, правильно ли его используют авторы, поэтому этот вопрос предполагает, что они есть.
В таком сценарииКажется, что единственный способ убедиться, что условие disposed
истинно за пределами оценки условия, - это использовать механизм синхронизации, такой как lock (), по всему телу каждого открытого элемента, включая метод Dispose (bool).Не приведет ли это к тому, что тип снова станет однопоточным?
И если это так, то нет смысла использовать его, и поэтому вы не можете полагаться на механизм ObjectDisposedException в некоторых IDisposable.реализации - так почему бы нам НИКОГДА использовать этот механизм, если он не нужен?
====
Я думаю, IDisposable и ObjectDisposedException просто не идут вместе для потоковобезопасных типов.