Я хочу запустить приложение WPF во втором домене приложений из класса «загрузчик». Если приложение WPF отключится, я хочу, чтобы оно запустило событие обратно в класс загрузчика, а класс загрузчика выгрузит () 2-й домен приложения и покажет экран входа в систему. Если пользователь снова войдет в систему, тот же процесс повторится.
У меня это работает до степени:
Класс Loader создает второй AppDomain и класс B в этом домене через CreateInstanceAndUnwrap.
Класс Loader создает MarshalByRefObject, который имеет событие Timeout, и передает его в B.StartUp (MBRO), который передает MBRO в конструктор WPF App (). Класс загрузчика добавляет обработчик в MBRO.Timeout.
Время ожидания приложения WPF вызывает MBRO.Timeout, который обрабатывается классом Loader. В обработчике событий класс Loader закрывает B WPF App и показывает окно входа в систему.
Проблема в том, что я не могу выгрузить 2-й домен приложения на шаге 3. Когда я это делаю, он также отключает хост-домен приложения (без исключений или чего-то еще, все отключается).
Я думаю, что проблема возникает из-за того, что делегат обработчика событий запускается приложением WPF, которое находится во 2-м домене, и поэтому я пытаюсь извлечь коврик из-под домена приложения из делегата, из которого он запущен.
Это правильно? Работает ли это так на доменах?
Итак, кто-нибудь может предложить способ, с помощью которого вы можете запустить 2-й домен приложений, получить событие от 2-го домена приложений и выгрузить () 2-й домен приложений при получении этого события? Я думаю, что мне нужен кто-то, чтобы отделить получение события от Акта выгрузки домена приложения.