.NET远程处理-如何确定相邻AppDomain中是否仍存在对远程对象的引用?

.NET远程处理-如何确定相邻AppDomain中是否仍存在对远程对象的引用?,.net,remoting,.net,Remoting,我有一个应用程序,它使用.NETRemoting在另一个AppDomain中加载插件(在同一进程中)。这是因为插件必须是不可加载的 我偶尔会在主appdomain中发现一个异常,即插件appdomain中的远程对象(从MarshallByRefObject继承)已被垃圾收集。因为我控制插件和应用程序本身的代码,所以我可以在搜索解决方案时修改两侧的代码 第一个想法是为这些物品提供无限期租赁。这是可行的,但只适用于始终存在的少数全局对象。其他对象可能会变得内存非常大,我实际上希望对它们进行垃圾收集—

我有一个应用程序,它使用.NETRemoting在另一个AppDomain中加载插件(在同一进程中)。这是因为插件必须是不可加载的

我偶尔会在主appdomain中发现一个异常,即插件appdomain中的远程对象(从
MarshallByRefObject
继承)已被垃圾收集。因为我控制插件和应用程序本身的代码,所以我可以在搜索解决方案时修改两侧的代码

第一个想法是为这些物品提供无限期租赁。这是可行的,但只适用于始终存在的少数全局对象。其他对象可能会变得内存非常大,我实际上希望对它们进行垃圾收集——当然,当主appdomain处理完它们时

一种可能的解决方案是实现
IDisposable
,并切换到为已处置对象返回过期租约。然而,这需要我认真地
Dispose()
我曾经使用过的这些对象的所有实例。相当多的代码需要检查和修复

所以我想知道是否还有其他方法?我尝试实现一个终结器,但它似乎只在远程appdomain上运行,不管对象是通过值还是引用封送的。有没有办法检测到本地包装即将被垃圾收集,然后以某种方式将远程对象标记为“垃圾收集自由”