Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выгрузка доменов приложений программным образом



Важно отметить, что 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);

Console.ReadLine();

}

Важно обратить внимание, что событие DomainUnload работает совместно с

делегатом System.EventHandler, и потому метод anotherAD_DomainUnload() должен

принимать следующие аргументы:

static void anotherAD_DomainUnload(object sender, EventArgs e)

{

Console.WriteLine ("***** Unloaded anotherAD! *****\n");

}

Чтобы получать уведомление о выгрузке используемого по умолчанию домена

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

этим доменом событие ProcessEvent:

static void Main(string [ ] args)

{

Console.WriteLine("***** Fun with AppDomains *****\n");

AppDomain defaultAD = AppDomain.CurrentDomain;

defaultAD.ProcessExit += new EventHandler(defaultAD_ProcessExit);

}

и определить соответствующий обработчик событий:

static void defaultAD_ProcessExit(object sender, EventArgs e)

{Console.WriteLine("***** Unloaded defaultAD! *****\n"); }





Дата публикования: 2015-07-22; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...