Ответ на ваш вопрос - нет: освобождение памяти, выделенной для объекта, не имеет ничего общего с вызовом метода Dispose
.Это происходит со временем, когда сборщик мусора попадает в него.
Вообще говоря, Dispose
предназначен для ускорения выпуска внешних ресурсов, таких как файловые дескрипторы, семафоры, дБручки и другие элементы, часто выделяемые операционной системой.Если ваш объект удерживается на других IDisposable
объектах, он должен также использовать их в своем вызове для удаления.
Финализатор, однако, отличается: он вызывается как часть сборки мусора и предназначен длявысвобождение внешних ресурсов, которые не были освобождены во время утилизации (предположительно, потому что пользователь забыл вызвать Dispose
).Финализаторы не должны вызывать Dispose
других объектов, которые может содержать ваш объект, поскольку они уже находятся в процессе сбора мусора.