понедельник, февраля 07, 2005

Основы Framework.NET: интерфейс IDisposable

Классы, которые «держат» ресурсы системы (такие как подключения к базе данных, handler'ы окон, открытые файлы) должны корректно освобождать эти ресурсы при своем уничтожении. Microsoft предлагает Dispose Design Pattern для этих целей. В статье Implementing Finalize and Dispose to Clean Up Unmanaged Resources россказывают, как с помощью интерфейса IDisposable и метода Finalize обеспечить корректное и своевременное (в случаях с дефицитными ресурсами) освобождение занятых классом ресурсов.
В статье Implementing a Dispose Method более подробно описывается реализация Dispose Design Pattern. Основная идея данного pattern'а — обеспечить правильное освобождение managed и unmanaged ресурсов.
Еще одна небольшая статья Implementing Dispose Method in a Derived Class, уточняющая как правильно перегрузить метод Dispose если такой существует у базового класса.
В заключении хочу напомнить о конструкции C#: using. Конструкция используется именно для работы с дефицитными ресурсами.