Вопрос

Если я реализую объект с помощью IDisposable, должны ли все объекты, владеющие этим объектом, также реализовать его, даже если у них нет других ресурсов для освобождения?

Это было полезно?

Решение

Да.Вам необходимо избавиться от них, чтобы переменные-члены были правильно удалены.

Каждый раз, когда вы инкапсулируете класс IDisposable, вы должны сделать свой класс IDisposable.В методе Dispose вы должны удалить инкапсулированные ресурсы.По сути, относитесь к ним так же, как к родному ресурсу.

Другие советы

Если вы хотите детерминированное удаление, в конечном итоге какой-то клиент должен вызвать Dispose или обернуть вызовы в блок «using».Чтобы перейти к вашему объекту, может потребоваться, чтобы владелец также реализовал IDisposable.

Не следует полагаться на сборщик мусора для освобождения ресурсов, зависящих от времени.

Да, класс-владелец должен реализовывать IDisposable, но ему не нужен (не должен быть) финализатор (деструктор).

нет, им просто нужно использовать этот класс с оператором «using», чтобы убедиться, что они правильно размещают этот объект, но самим этим объектам не нужно реализовывать IDisplosable.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top