Интерфейс IDisposable

170
06 января 2018, 00:06

Появились некоторые вопросы касательно реализацию IDisposable по шаблону, который предлагает Микрософт, где еще задействован финализатор.

Там пишется, что если программист забыл позаботится о ручном вызове Dispose, то нужно реализовать финализатор.

Почему в финализатор вызывает метод Dispose со значением false, что приводит к освобождению только неуправляемых ресурсов?

Если верить статьям, то сборщик мусора видит, что у объекта есть финализатор и помещает его в отдельную очередь => как я понимаю, объект считается удаленным после финализации.

Или я что-то упускаю?

Answer 1

Сборщик мусора в .NET вполне хорошо справляется с удалением управляемых ресурсов. Однако же о неуправляемых ресурсах он мало что знает. Так вот если вызывается финализатор, то можно считать, что до управляемых ресурсов у сборщика мусора руки уже дошли (точнее, вот-вот дойдут), а вот об освобождении неуправляемых нужно позаботиться самому программисту. Поэтому в таком случае вызывается Dispose(false).

READ ALSO
SQL query, BETWEEN. Windows forms. Запрос

SQL query, BETWEEN. Windows forms. Запрос

Не работает SQL запрос с BETWEENНеобходимо создавать отчет с данными о пациентах за период времени, заданный пользователем

212
Как начать учить angular [требует правки]

Как начать учить angular [требует правки]

Хочу начать учить Ангуляр, вот только много видеоуроков на ютубе уже устарели, ангуляров уже 5 вроде, а во всяких ответах на Тостере пишут,...

237
Не работает расширение

Не работает расширение

С первого сайта я парсю ссылку, на втором пытаюсь вывести её в консоль ( для проверки работоспособности хранилища)Собственно весь код, в манифесте...

233
Как изменить механизм формы опроса?

Как изменить механизм формы опроса?

Есть следующая форма опросаКак с помощью javascript сделать, чтобы при выборе/клике нужного ответа срабатывала кнопка "ответить" без ее нажатия?

307