2015-02-11 3 views
0

У меня есть довольно простой код, как:AppDomain разгрузки закрывает приложение

var childDomain = AppDomain.CreateDomain("child"); 
childDomain.ExecuteAssembly("WpfApplication1.exe"); 
AppDomain.Unload(childDomain); 

Но она закрывает приложение на всех. У меня нет ссылок на WpfApplication1.exe в родительском приложении. Я читал это - AppDomain Unload killing Parent AppDomain, но это не помогло.

Так что я делаю неправильно?

+0

Проверьте, не вызывается ли какое-либо исключение, что приводит к сбою процесса? –

+0

Вопрос только в том, что вам действительно нужно самостоятельно создать этот домен приложения самостоятельно? Вы можете сделать простой процесс Process.Start() для запуска внешнего приложения, которое создаст собственный домен appdomain. – DarkUrse

+0

@SriramSakthivel, как я могу это сделать? Я хотел бы иметь некоторый контроль над дочерним доменом. Например, исключения catch, установить принципы потоков и т. Д. – Crossman

ответ

0

Проблема была в этой строке: childDomain.ExecuteAssembly ("WpfApplication1.exe");

Метод ExecuteAssembly запускает приложение в том же потоке, что и вызывающий. Таким образом, разгрузка убивает основной поток. Решение запускает дочернее приложение в новом потоке STA.

Смежные вопросы