使用引用卸载appdomain

时间:2009-09-20 02:31:20

标签: .net appdomain

我刚开始使用appdomains,所以我正在学习。

我正在使用appdomains来隔离我在运行时加载的插件实例。如果我从主appdomain引用一个插件对象(在它自己的appdomain中)并卸载该插件appdomain,它会完全卸载吗?

我的理解是,通过从主appdomain引用插件实例,我实际上是引用透明代理,所以我实际上并没有直接引用该对象。因此,我认为没有问题,但我想确保我的理解是正确的。

1 个答案:

答案 0 :(得分:2)

您的理解是正确的:一个appdomain中的对象无法真正引用另一个appdomain中的对象,因此卸载appdomain将真正释放该appdomain中的所有对象(并且您的代理对象变得陈旧)。

卸载时仍然存在各种问题:如果某个代码当前正在appdomain中执行(例如本机代码),则卸载将失败并出现异常。因此,在尝试卸载之前,应确保所有线程都已从AppDomain返回。