2009-09-20 116 views
1

我是使用appdomains的新手,所以我正在學習。使用引用卸載AppDomain

我正在使用appdomains來隔離我在運行時加載的插件實例。如果我從主appdomain引用插件對象(在它自己的appdomain中)並卸載該插件appdomain,它會完全卸載嗎?

我的理解是,通過引用主應用程序域中的插件實例,我實際上引用了一個透明代理,所以實際上並沒有直接引用該對象。由於這一點,我相信這沒有問題,但我想確保我的理解是正確的。

回答

2

您的理解是正確的:一個appdomain中的對象不能真正引用另一個appdomain中的對象,因此卸載appdomain將真正釋放該appdomain中的所有對象(並且您的代理對象變爲陳舊)。

卸載仍然存在各種問題:如果某些代碼當前正在appdomain中執行(例如本機代碼),那麼卸載將失敗,並出現異常。所以你應該確保所有線程在嘗試卸載之前已經返回AppDomain。

+0

感謝您的額外信息! – redman 2009-09-20 16:50:50