Программное создание новых доменов приложения
Программное создание новых доменов приложения
Напомним, что один процесс может содержать множество доменов приложения, И хотя вам в программном коде вряд ли понадобится вручную создавать домены приложения, вы имеете возможность сделать это с помощью статического метода CreateDomain(). Нетрудно догадаться, что метод AppDomain.CreateDomain() перегружен. Вы, по крайней мере, должны указать понятное имя нового домена приложения, как показано ниже.
static void Main(string[] args) {
…
// Создание нового AppDomain в рамках текущего процесса.
AppDomain anotherAD = AppDomain.CreateDomain("SecondAppDomain");
PrintAllAssembliesInAppDomain(anotherAD);
Console.ReadLine();
}
Если выполнить приложение теперь (рис. 13.7), вы увидите, что компоновочные блоки System.Windows.Forms.dll, System.Drawing.dll и System.dll будут загружены только в рамках домена приложения, созданного по умолчанию. Это может показаться нелогичным для тех. кто имеете опыт программирования с использованием традиционных подходов Win32 (скорее, оба домена приложения должны иметь доступ к одному и тому же множеству компоновочных блоков). Напомним, однако, о том. что компоновочный блок загружается в рамки домена приложения а не в рамки непосредственно самого процесса.

Рис. 13.7. Один процесс с двумя доменами приложения
Далее, обратите внимание на то, что домен приложения SecondAppDomain автоматически получает свою собственную копию mscorlib.dll, поскольку этот ключевой компоновочный блок автоматически загружается средой CLR для каждого домена приложения. Это порождает следующий вопрос "Как можно программно загрузить компоновочный блок в домен приложения?" Ответ: с помощью метода АррDomain.Load() (или, альтернативно, с помощью AppDomain.executeAssembly()). В предположении, что вы скопировали CarLibrary.dll в каталог приложения AppDomainManipulator.exe, вы можете загрузить CarLibrary.dll в домен приложения SecondAppDomain так.
static void Main(string[] args) {
Console.WriteLine("***** Чудесное приложение AppDomain ***** ");
…
// Загрузка CarLibrary.dll в новый AppDomain.
AppDomain anotherAD = AppDomain.CreateDomain("SecondAppDomain");
anotherAD.Load("CarLibrary");
PrintAllAssembliesInAppDomain(anotherAD);
Console.ReadLine();
}
Чтобы закрепить понимание взаимосвязей между процессами, доменами приложения и компоновочными блоками, рассмотрите рис. 13.8, на котором представлена диаграмма внутреннего устройства только что построенного процесса AppDomainManipulator.exe.

Рис. 13.8. Схема функционирования процесса AppDomainManipulator.exe
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Элемент <xsl:element>: создание новых элементов на этапе выполнения
Элемент <xsl:element>: создание новых элементов на этапе выполнения Новые элементы можно создавать при помощи элемента <xsl:element>, который очень удобен для задания имени нового элемента на этапе выполнения.У этого элемента три атрибута:• name (обязательный). Имя
Элемент <xsl:attribute>: создание новых атрибутов
Элемент <xsl:attribute>: создание новых атрибутов Аналогично тому, как вы можете создавать новые элементы при помощи <xsl:element> и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента <xsl:attribute> это можно делать для атрибутов. У элемента два
14.3.1. Создание новых каталогов
14.3.1. Создание новых каталогов Создание новых каталогов выполняется очень просто.#include <fcntl.h>#include <unistd.h>int mkdir(const char * dirname, mode_t mode);Путь, определенный в dirname, создается как новый каталог с полномочием mode (что модифицируется umask процесса). Если dirname определяет существующий
4. Создание новых предложений (20 % времени)
4. Создание новых предложений (20 % времени) Также 20 % времени вы тратите на создание новых предложений. Мы рекомендуем два часа в день уделять раскрутке вашего инфобизнеса, подписной страницы, бесплатных курсов и наращиванию подписной базы. Час в день посвятить всему, что
Создание новых записей в форме, связанной с данными
Создание новых записей в форме, связанной с данными Для создания новой записи в связанном с данными приложении на основе Windows Forms нужно использовать метод AddNew объекта BindingContext. При выполнении этого метода любые связанные с данными элементы управления очищаются для ввода
Список доменов приложения процесса
Список доменов приложения процесса Для примера программного взаимодействия с доменами приложений .NET предположим, что у нас есть новое консольное приложение C# с именем AppDomainManipulator, в рамках которого определяется статический метод PrintAllAssembliesInAppDomain(). Этот вспомогательный
Программная выгрузка доменов приложения
Программная выгрузка доменов приложения Важно понимать, что среда CLR не позволяет выгружать отдельные компоновочные блоки .NET. Однако, используя метод AppDomain.Unload(), вы можете избирательно выгрузить домен приложения из объемлющего процесса. При этом домен приложения
Программное создание вторичных потоков
Программное создание вторичных потоков Чтобы программно создавать дополнительные потоки, выполняющие свои отдельные задачи, вы должны следовать вполне понятным указанным ниже рекомендациям.1. Для выбранного типа создайте метод, который будет использоваться в качестве
Создание MDI-приложения
Создание MDI-приложения Чтобы завершить краткое знакомство с Windows Forms, давайте обсудим то, как настроить форму на работу в качестве родительского объекта для любого числа дочерних окон (т.е. в качестве MDI-контейнера). MDI-приложения дают пользователям возможность открывать
Создание приложения клиента
Создание приложения клиента Теперь, когда вы лучше понимаете внутреннюю композицию генерируемого агента, давайте попытаемся его использовать. Создайте новое консольное приложение с именем CalculatorClient, добавьте в проект файл proxy.cs с помощью выбора Project?Add Existing Item из меню и
Создание приложения без формы
Создание приложения без формы В некоторых случаях необходимо иметь приложение, которое, запустившись, не выводит на экран форму или вообще не имеет и не создает форм. Создать такое приложение очень просто. Эта технология рассматривается в следующем
Создание приложения для смартфона
Создание приложения для смартфона В главе 7 уже создавался проект, рассчитанный на работу с смартфоном. Мы тогда немного забежали вперед. Настало время вернуться к истокам и начать изучение с самого начала.Запустите Visual Studio 2005 для создания нового проекта. Надо выбрать тип
17.3.1. Изменение макета слайда, создание новых слайдов
17.3.1. Изменение макета слайда, создание новых слайдов Щелкните по любому слайду, а затем посмотрите на вкладку Макеты — будет выбран макет, используемый выбранным слайдом. Для изменения макета слайда щелкните двойным щелчком по нужному вам макету — будет изменен макет
Создание новых языков
Создание новых языков Хотя мы и говорим об XML, как о формате описания данных, на самом деле XML — это метаязык, язык, который описывает другие языки. Строго говоря, когда мы создаем XML-документ, мы создаем его не на XML, а в соответствии с XML-синтаксисом. XML — это всего лишь набор
5. Редактирование реестра и создание новых объектов в реестре
5. Редактирование реестра и создание новых объектов в реестре Редактирование реестра заключается в создании новых разделов, новых параметров, удалении уже имеющихся параметров и разделов, а также редактировании значений параметров. Все эти операции мы и рассмотрим в