Как получить все AppDomains в процессе?
Народ! Возможно ли получить все домены в текущем процессе?
В .NET один процесс работает только в одном домене (есть кроме DefaultDomain, ээкземпляра AppDomain ещё и SystemDomain и SharedDomain). Процесс может создать домен и загрузить в него сборку, дальше она работает автономно. Получить стандартными средствами все домены созданные одним доменом Framework не получится. Расскажи, что ты этим хочешь сделать, а решение уже придумаем
Цитата:
Originally posted by 3A3-968M
В .NET один процесс работает только в одном домене (есть кроме DefaultDomain, ээкземпляра AppDomain ещё и SystemDomain и SharedDomain). Процесс может создать домен и загрузить в него сборку, дальше она работает автономно. Получить стандартными средствами все домены созданные одним доменом Framework не получится. Расскажи, что ты этим хочешь сделать, а решение уже придумаем
В .NET один процесс работает только в одном домене (есть кроме DefaultDomain, ээкземпляра AppDomain ещё и SystemDomain и SharedDomain). Процесс может создать домен и загрузить в него сборку, дальше она работает автономно. Получить стандартными средствами все домены созданные одним доменом Framework не получится. Расскажи, что ты этим хочешь сделать, а решение уже придумаем
имееться ввиду все домены, которые были созданы в контексте текущего процесса.
например: AppDomain tempDomain = AppDomain.CreateDomain("Temporary",AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);
я могу получить текущий домен в процессе AppDomain.CurrentDoamin,
а вот как получить вот этот временный домен, если он был создан где-то далеко.
Другое дело, если тебе нужно собрать инфу о доменах из твоего кода, а не из другого приложения...
Цитата:
Originally posted by 3A3-968M
Есть такой класс WebProcessStatistics. У его экземпляра есть свойство AppDomainCount. Если его использовать в обычном приложении (не Web-приложении), то оно не работает. Если не лень, дизассемблируй этот класс и посмотри, откуда берётся значение этого свойства. Я дошёл до третего по вложенности вызова функции и затерялся в System.Web.Hosting. Больше никаких способов я не нашёл:(
Другое дело, если тебе нужно собрать инфу о доменах из твоего кода, а не из другого приложения...
Есть такой класс WebProcessStatistics. У его экземпляра есть свойство AppDomainCount. Если его использовать в обычном приложении (не Web-приложении), то оно не работает. Если не лень, дизассемблируй этот класс и посмотри, откуда берётся значение этого свойства. Я дошёл до третего по вложенности вызова функции и затерялся в System.Web.Hosting. Больше никаких способов я не нашёл:(
Другое дело, если тебе нужно собрать инфу о доменах из твоего кода, а не из другого приложения...
Конечно из моего кода!!
Мне нужны домены, которые создавались в контексте
моего процесса (текущего). Т.е. так как я например
получаю текущий поток (Thread.CurrentThread) или
текущий домен (AppDomain.CurrentDomain)
private List<AppDomain> domains=new List<AppDomain>();
public static AppDomain CreateNewDomain(string name)
{
AppDomain domain=AppDomain.CreateDomain(name, AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);
domains.Add(domain);
return domain;
}
public AppDomain[] GetDomains()
{
return domains.ToArray();
}
Потом создавай домены функцией CreateNewDomain, все имеющиеся домены можно получить функцией GetDomains.
Спасибо за ответы и уделенное моему вопросу время.