Взаимосвязи Process и AppDomain - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите, пожалуйста, подробно, какие на деле есть связи между Process'ом и его AppDomain'ами? Везде пишут, что каждому процессу принадлежат один/несколько доменов. Вроде всё просто. Но захотелось мне вывести рекурсивное дерево всех процессов с их доменами на моём компьютере, как столкнулся с трудностями - у класса Process нету коллекции доменов и каких-то отсылок к ним. Получается, что на прямую домены к процессам всё-таки не принадлежат? У Process есть только какие-то Module'и (Process.ModuleCollection), которые, причём, не у всех почему-то и есть. Похоже, что модули - библиотеки, загруженные в процесс. Это так? У Process есть ProcessThread'ы. Ага, логично, какие-то потоки, вроде бы в них должны быть домены, но там их тоже нет... Что из этого является или содержит в себе AppDomain'ы? Или как их получить из Process'а?

Решение задачи: «Взаимосвязи Process и AppDomain»

textual
Листинг программы
using Microsoft.Samples.Debugging.CorPublish;
 
CorPublish cp = new CorPublish();
foreach (CorPublishProcess process in cp.EnumProcesses().Cast<CorPublishProcess>().Where(p => p.IsManaged))
{
    Console.WriteLine("[{0}] {1}", process.ProcessId, process.DisplayName);
    foreach (CorPublishAppDomain appDomain in process.EnumAppDomains())
    {
        Console.WriteLine("\t[{0}] {1}", appDomain.Id, appDomain.Name);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5