AppDomain.Unload проблема - PullRequest
       13

AppDomain.Unload проблема

0 голосов
/ 06 июля 2011

Является ли appdomain выгруженным во время вызова метода AppDomain.Unload (name). Или это флаги для следующей сборки мусора. У меня следующая ситуация Коллекция доменов приложений. ListApp Выгрузите конкретный домен скажем d1 из ListApp Сразу после выгрузки d1 снова создайте домен d1 и добавьте его в ListApp Когда я использую метод d1.CreateInstanceAndUnwrap (), он выдает исключение «попытка получить доступ к незагруженному домену приложения»

public static IDictionary<object, AppDomain> LoadedDomains { get; internal set; }

private static void Load(object key)
{
    if (!LoadedDomains.Contains(key))
    {
        AppDomain domain = AppDomain.CreateDomain("t");
        LoadedDomains.Add(key, domain);
    }
}

private static void UnLoad(object key)
{
    if (LoadedDomains.Contains(key))
    {
        AppDomain.Unload(LoadedDomains(key));
        LoadedDomains.Remove(key);
    }
}

private static void Execute()
{
    object key = new object();
    Load(key);
    Unload(key);
    Load(key);
    MyObject myobj= LoadedDomains[key].CreateInstance("asName", "type");
}

Ответы [ 2 ]

1 голос
/ 06 июля 2011

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

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

Требуется больше кода, чтобы помочь в дальнейшей работе ...

0 голосов
/ 07 июля 2011

Я нашел проблему в своем коде. Выгрузка домена и не обновление словаря.

...