Здравствуйте, TK, Вы писали:
F>>Предположим, есть некий класс A, у которого 2 поля типа FileStream, каким-то образом инициализируются. Если для внутреннего употребления надо сделать так, чтобы эти FileStream'ы в определенном порядке деинициализировались, я правильно понимаю, что шаблон Dispose будет ошибочным вариантом, т.к. в момент исполнения A.Dispose эти FileStream'ы уже могут быть закрыты GC?
TK>Вы путаете Dispose и Finalize. GC знает только про Finalize. Шаблон Dispose — это реализация IDisposable и использование в нем финализатора в большинстве случаев неправильно.
Это понятно, что GC не знает про Dispose. Но почему вызов Dispose из финализатора — это неправильно?
F>>Как лучше сделать для своего внутреннего употребления?
TK>Для внутреннего применения лучше следить за созданными A и своевременно вызывать Dispose.
Так ведь фишка финализатора в том, что можно не следить, разве не так?
TK>Если будет спокойнее то и A.List<FileStream> тоже мало чего гарантирует
А вот это почему? Статический же.