Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpRsNr 162 of 163 menu
◀ ▶

Вложенный ресурс в C#

Сложный объект часто содержит другой объект с ресурсом внутри.

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

Внутренний класс закроет свой ресурс:

using (Outer outer = new Outer()) { Console.WriteLine("working"); } class Inner : IDisposable { public void Dispose() { Console.WriteLine("inner closed"); } } class Outer : IDisposable { private Inner inner = new Inner(); public void Dispose() { inner.Dispose(); Console.WriteLine("outer closed"); } }

Сделайте InnerPort и OuterHub с явным освобождением. OuterHub при завершении работы должен освободить InnerPort.

Используйте OuterHub в блоке с автоматическим освобождением и проверьте, что на экране сначала рабочее сообщение, затем закрытие внутренней части, потом внешней.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить