Pull to refresh

Comments 2

По поводу деструкторов: никогда не используйте деструкторы — потому что вы не можете гарантировать, в какой момент времени они будут вызваны!

Если некоторый ресурс полностью управляемый (т.е. существует исключительно в памяти приложения) — следует использовать интерфейс IDisposable и его метод Dispose (кстати, почему про него нет ни слова — хотя это прямой аналог происходящему в AS3?)

Если некоторый объект содержит неуправляемые ресурсы — то тоже достаточно метода Dispose, который вызовет другой метод Dispose по цепочке.

Единственный случай, когда требуется взаимодействие со сборщиком мусора — это полностью неуправляемый объект. Такой объект должен наследовать класс SafeHandle и перегружать его метод ReleaseHandle. Точка.

PS

А файл удалять лучше всего через указание флага FILE_FLAG_DELETE_ON_CLOSE — это гарантирует удаление файла силами ОС даже в случае завершения процесса через диспетчер задач — чего другие методы отложенного удаления не могут гарантировать в принципе.
Спасибо за такое подробное описание, я не был знаком с этой информацией, о которой вы рассказали.

На счёт вашего вопроса о IDisposable: думаю, этот вопрос можно задать автору статьи (оригинала), возможно он тоже не знал о существовании подобного интерфейса (на сколько я понимаю, автор сам не так давно начал переход с AS3 на C# и тоже может допускать ошибки или иметь белые пятна в своих знаниях).
Sign up to leave a comment.

Articles