2009-09-20 61 views
1

我是使用appdomains的新手,所以我正在学习。使用引用卸载AppDomain

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

我的理解是,通过引用主应用程序域中的插件实例,我实际上引用了一个透明代理,所以实际上并没有直接引用该对象。由于这一点,我相信这没有问题,但我想确保我的理解是正确的。

回答

2

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

卸载仍然存在各种问题:如果某些代码当前正在appdomain中执行(例如本机代码),那么卸载将失败,并出现异常。所以你应该确保所有线程在尝试卸载之前已经返回AppDomain。

+0

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