Программная выгрузка доменов приложения

Программная выгрузка доменов приложения

Важно понимать, что среда CLR не позволяет выгружать отдельные компоновочные блоки .NET. Однако, используя метод AppDomain.Unload(), вы можете избирательно выгрузить домен приложения из объемлющего процесса. При этом домен приложения выгрузит по очереди каждый компоновочный блок.

Напомним, что тип AppDomain определяет набор событий, одним из которых является DomainUnload. Это событие генерируется тогда, когда домен приложения (не являющийся доменом, созданным по умолчанию) выгружается из содержащего этот домен процесса. Другим заслуживающим внимания событием является событие ProcessExit, которое генерируется при выгрузке из процесса домена, создаваемого по умолчанию (что, очевидно, влечет за собой завершение всего процесса). Так, если вы хотите программно выгрузить anotherAD из процесса AppDomainManipulator.exe и получить извещение о том, что соответствующий домен приложения закрыт, можете использовать следующую программную логику событий.

static void Main(string[] args) {

 …

 // Привязка к событию DomainUnload.

 anotherAD.DomainUnload += new EventHandler(anotherAD_DomainUnload);

 // Теперь выгрузка anotherAD.

AppDomain.Unload(anotherAD);

}

Обратите внимание на то, что событие DomainUnload работает в паре с делегатом System.EventHandler, поэтому формат anotherAD_DomainUnload() требует следующих аргументов.

public static void anotherAD_DomainUnload(object sender, EventArgs e) {

 Console.WriteLine("***** Выгрузка anotherAD! ***** ");

}

Если вы хотите получить извещение при выгрузке домена приложения, созданного по умолчанию, измените метод Main() так, чтобы обработать событие ProcessEvent, соответствующее домену приложения по умолчанию:

static void Main(string [] args) {

 …

 AppDomain defaultAD = AppDomain.CurrentDomain;

 defaultAD.ProcessExit +=new EventHandler(defaultAD_ProcessExit);

}

и определите подходящий обработчик событий.

private static void defaultAD_ProcessExit (object sender, EventArgs e) {

 Console.WriteLine("***** Выгрузка defaultAD! ***** ");

}

Исходный код. Проект AppDomainManipulator размещен в подкаталоге, соответствующем главе 13.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

9.1.2 Выгрузка процессов

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

9.1.2 Выгрузка процессов Ядро выгружает процесс, если испытывает потребность в свободной памяти, которая может возникнуть в следующих случаях:1. Произведено обращение к системной функции fork, которая должна выделить место в памяти для процесса-потомка.2. Произведено


9.1.2.1 Выгрузка при выполнении системной функции fork

Из книги Сбои и ошибки ПК. Лечим компьютер сами. Начали! автора Ташков Петр

9.1.2.1 Выгрузка при выполнении системной функции fork В описании системной функции fork (раздел 7.1) предполагалось, что процесс-родитель получил в свое распоряжение память, достаточную для создания контекста потомка. Если это условие не выполняется, ядро выгружает процесс из


9.1.2.2 Выгрузка с расширением

Из книги Sound Forge 9 автора Квинт Игорь

9.1.2.2 Выгрузка с расширением Если процесс испытывает потребность в дополнительной физической памяти, либо в результате расширения стека, либо в результате запуска функции brk, и если эта потребность превышает доступные резервы памяти, ядро выполняет операцию выгрузки


Программная несовместимость

Из книги Работа в Интернете автора Макарский Дмитрий

Программная несовместимость Главной проблемой в использовании программ является их несовместимость с операционной системой. Дело в том, что разработчики ориентируют приложение на работу в одной или нескольких операционных системах, использующихся на момент его


Программная конфигурация

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

Программная конфигурация Для полноценной работы программы Sound Forge 9.0 желательно иметь следующую программную конфигурацию.• Операционная система Microsoft Windows 2000 SP4, XP или Windows Vista. Версия Sound Forge, рассматриваемая в этой книге, официально сертифицирована на совместимость с


Загрузка и выгрузка файлов посредством FTP

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Загрузка и выгрузка файлов посредством FTP Поговорим о том, как можно выгрузить свои файлы на удаленный сервер Интернета, чтобы их потом могли загружать другие, а также рассмотрим еще один способ загрузки файлов на свой компьютер, не связанный с использованием браузеров и


Автоматическая выгрузка DLL-файлов

Из книги Сбои и ошибки ПК. Лечим компьютер сами автора Донцов Дмитрий

Автоматическая выгрузка DLL-файлов С помощью реестра можно включить автоматическую выгрузку DLL-файлов. Ее целесообразность обусловлена тем, что интервал времени, через который оболочка Windows выгружает неиспользуемые DLL-файлы, может быть достаточно большим (например, при


Список доменов приложения процесса

Из книги Сетевые средства Linux автора Смит Родерик В.

Список доменов приложения процесса Для примера программного взаимодействия с доменами приложений .NET предположим, что у нас есть новое консольное приложение C# с именем AppDomainManipulator, в рамках которого определяется статический метод PrintAllAssembliesInAppDomain(). Этот вспомогательный


Программное создание новых доменов приложения

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Программное создание новых доменов приложения Напомним, что один процесс может содержать множество доменов приложения, И хотя вам в программном коде вряд ли понадобится вручную создавать домены приложения, вы имеете возможность сделать это с помощью статического


Программная несовместимость

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Программная несовместимость Главной проблемой в использовании программ является их несовместимость с операционной системой. Дело в том, что разработчики ориентируют программу на работу в одной или нескольких операционных системах, использующихся на момент ее


Использование виртуальных доменов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Использование виртуальных доменов Наличие виртуальных доменов позволяет Web-серверу по-разному обрабатывать запросы, в зависимости от имен, указанных в них. (Чтобы к Web-серверу можно было обращаться по разным именам, необходимо создать несколько записей в


Конфигурация виртуальных доменов

Из книги Домены. Все, что нужно знать о ключевом элементе Интернета автора Венедюхин Александр

Конфигурация виртуальных доменов Существуют два способа организации работы с виртуальными доменами. Один из них состоит в том, что, в зависимости от имени, указанного в запросе, в качестве корневого каталога документов выбираются различные каталоги. Второй способ


Загрузка и выгрузка фильмов Shockwave/Flash и изображений в формате JPEG

Из книги автора

Загрузка и выгрузка фильмов Shockwave/Flash и изображений в формате JPEG Проще всего загрузить в основной фильм, воспроизводящийся в окне проигрывателя Flash, другой фильм Shockwave/Flash или изображение в формате JPEG из внешнего файла (загружаемого фильма). Такое часто делается, особенно


Выгрузка библиотек при выходе из программы

Из книги автора

Выгрузка библиотек при выходе из программы По умолчанию система при завершении работы программы оставляет в памяти ее библиотеки на случай, если через некоторое время она снова будет запущена. С одной стороны, плюс этого метода очевиден — следующий запуск будет


2.3.6. Динамическая загрузка и выгрузка

Из книги автора

2.3.6. Динамическая загрузка и выгрузка Иногда на этапе выполнения программы требуется загрузить некоторый код без явной компоновки. Рассмотрим приложение, поддерживающее подключаемые модули: Web-броузер. Архитектура броузера позволяет сторонним разработчикам создавать


Тысячи доменов

Из книги автора

Тысячи доменов Сколько имен внутри домена первого уровня может находиться под контролем одного администратора? Пять? Десять? Пределы определяются только правилами регистрации, действующими внутри домена. Например, в некоторых национальных доменах на число имен,