Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Cleanup(false);

Роль корневых элементов приложения | Поколения объектов | Фоновая сборка мусора в версии .NET 4.0 | Public class Object | Описание процесса финализации | Rw.Dispose (); | Взаимодействие со сборщиком мусора | GC.WaitForPendingFinalizers (); | Public enum GCCollectionMode | Создание финализируемых и высвобождаемых типов |


}

}

Обратите внимание, что в MyResourceWrapper теперь определяется приватный вспомогательный метод по имени Cleanup(). Передача ему в качестве аргумента значения true свидетельствует о том, что очистку инициировал пользователь объекта, следовательно, требуется освободить все управляемые и неуправляемые ресурсы. Когда очистка инициируется сборщиком мусора, при вызове Cleanup() передается значение false, чтобы освобождения внутренних высвобождаемых объектов не происходило (поскольку рассчитывать на то, что они по-прежнему находятся в памяти, нельзя). И, наконец, перед выходом из Cleanup() для переменной экземпляра типа bool (по имени disposed) устанавливается значение true, что дает возможность вызывать метод Dispose() много раз без появления ошибки.

 

На заметку! После "освобождения" (dispose) объекта клиент по-прежнему может вызывать на нем какие-нибудь члены, поскольку объект пока еще находится в памяти. Следовательно, в показанном сложном классе-упаковщике ресурсов не помешало бы снабдить каждый член дополнительной логикой, которая бы, по сути, гласила: "если объект освобожден, ничего не делать, а просто вернуть управление".

 

Чтобы протестировать последнюю версию класса MyResourceWrapper, добавим в метод финализации вызов Console.Веер():

 

~MyResourceWrapper()

{


Дата добавления: 2015-07-25; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Формализованный шаблон очистки| Тренажёр

mybiblioteka.su - 2015-2024 год. (0.006 сек.)