.net 卸载包含引用的appdomain

.net 卸载包含引用的appdomain,.net,appdomain,.net,Appdomain,我不熟悉使用appdomains,所以我边走边学 我利用appdomains来隔离运行时加载的插件实例。如果我从主appdomain引用一个插件对象(在它自己的appdomain中),并卸载该插件appdomain,它会完全卸载吗 我的理解是,通过引用主appdomain中的插件实例,我实际上引用了一个透明代理,因此我实际上没有直接引用对象。因此,我认为没有问题,但我想确保我的理解是正确的。您的理解是正确的:一个appdomain中的对象不能真正引用另一个appdomain中的对象,因此卸载ap

我不熟悉使用appdomains,所以我边走边学

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


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

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

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