Появились некоторые вопросы касательно реализацию IDisposable по шаблону, который предлагает Микрософт, где еще задействован финализатор.
Там пишется, что если программист забыл позаботится о ручном вызове Dispose, то нужно реализовать финализатор.
Почему в финализатор вызывает метод Dispose со значением false, что приводит к освобождению только неуправляемых ресурсов?
Если верить статьям, то сборщик мусора видит, что у объекта есть финализатор и помещает его в отдельную очередь => как я понимаю, объект считается удаленным после финализации.
Или я что-то упускаю?
Сборщик мусора в .NET вполне хорошо справляется с удалением управляемых ресурсов. Однако же о неуправляемых ресурсах он мало что знает. Так вот если вызывается финализатор, то можно считать, что до управляемых ресурсов у сборщика мусора руки уже дошли (точнее, вот-вот дойдут), а вот об освобождении неуправляемых нужно позаботиться самому программисту. Поэтому в таком случае вызывается Dispose(false).
Сборка персонального компьютера от Artline: умный выбор для современных пользователей