2015-02-11 88 views
0

我有很簡單的代碼,如:的AppDomain卸載關閉應用

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

但它關閉的應用程序在所有。我在父應用程序中沒有任何對WpfApplication1.exe的引用。我讀到這個 ​​- AppDomain Unload killing Parent AppDomain但它沒有幫助。

那麼我在做什麼錯了?

+0

檢查是否有任何異常拋出崩潰的過程? – 2015-02-11 11:02:25

+0

只是一個問題,你真的需要自己手動創建這個應用程序域嗎?你可以做一個簡單的Process.Start()來運行你的外部應用程序,它將自己創建appdomain。 – DarkUrse 2015-02-11 11:03:33

+0

@SriramSakthivel,我該如何做到這一點?我想對子域進行一些控制。例如捕捉異常,設置線程原則等。 – Crossman 2015-02-11 11:15:03

回答

0

問題出在這一行: childDomain.ExecuteAssembly(「WpfApplication1.exe」);

ExecuteAssembly方法在與調用方相同的線程上運行應用程序。所以卸載正在殺死主線程。該解決方案在新的STA線程中運行子應用程序。