Цитата:
Сообщение от
Logger
Интересно, что пока решал проблему, нагуглил вот такое описание
Цитата:
In X++ it's the finalize method that contains all code that is used to clean up the instance (releases all objects that are held by this instance, ...). In C# this is done by the Dispose() method, but I'll describe this later.
Автор бложика - сознательно или нет - вводит людей в заблуждение: мне лично из Джеффри Рихтера, на которого он ссылается, запомнилось, что в C# метод Dispose() - это не деструктор и не аналог finalize() в X++, а метод высвобождения ограниченных ресурсов операционной системы, которыми не может управлять сборщик мусора. К таким ресурсам относятся разного рода дескрипторы (в т.ч. открытых файлов, но не только), блоки неуправляемой памяти, TCP-порты и тому подобное. Т.е. когда в C# класс реализует IDisposable, то это обычно делается именно потому, что он инкапсулирует какие-то ограниченные ресурсы системы, которые нужно уметь освободить "по команде", как в случае с закрытием файла, а не полагаться на сборщик мусора CLR.