Как получить текущий экземпляр из домена приложения? - PullRequest
1 голос
/ 11 мая 2010

Я использую домен приложений по умолчанию (AD), который я использую для создания новых доменов приложений (AD1), когда это необходимо для запуска плагинов в изоляции. При создании нового домена я также подключаю событие AppDomainUnload, чтобы позволить мне вызвать код очистки и т. Д.

Кажется, у меня проблема в следующем:

1) Создать AD1 из AD

2) Выполнить код в AD1

3) Вызов AD. Выгрузка (AD1)

Код переключается на AD1 и вызывает событие выгрузки, передавая ссылку на текущий домен приложений (AD1).

В этот момент я хотел бы получить ссылку на текущий экземпляр, запущенный в AD1, для вызова метода завершения работы, однако в классе AppDomain нет GetInstance.

Есть идеи, как я могу получить его?

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Когда вы создаете экземпляр в AD1, вы можете либо сохранить экземпляр в статической переменной в AppDoman, статика распространяется на AppDomain. В качестве альтернативы, если это не объект синглтонного типа, вы можете поддерживать List <> объектов в AppDomain.

Вы можете поместить эту «регистрацию» в конструктор вашего экземпляра плагина. При обработке выгрузки вы можете использовать статический или перечислить список и выполнить необходимую очистку объекта (ов).

1 голос
/ 11 мая 2010

Вы ищете AppDomain.CurrentDomain ?

...