【发布时间】:2016-04-29 18:47:04
【问题描述】:
我正在尝试在 C# 中实现一个插件框架,其中每个插件都加载到自己的 AppDomain 中。我遇到了AppDomains 之间的远程处理层似乎是垃圾收集我的插件实例的问题。每个插件都继承自这个类:
public class PluginRefObject : MarshalByRefObject{
public override object InitializeLifetimeService() {
return null;
}
}
我认为这会给对象一个无限的生命周期。然而,插件似乎工作了一点,然后突然我收到一个带有错误消息的RemotingException:
Object 'longhexstring.rem' has been disconnected or does not exist at the server
从谷歌搜索,我相信这意味着 GC 已经删除了我的远程对象。我是否必须做其他事情才能让这个对象保持活力?
【问题讨论】:
-
是的,我看到了那个。链接不好,发布的 .chm 文件无法打开
-
道歉;我相信这可能会有所帮助:msdn.microsoft.com/en-us/library/23bk23zc(v=vs.85).aspx
-
@spectacularbob 我通过右键单击文件打开 .chm 文件,转到属性,然后单击“取消阻止”。在我这样做之前,我可以看到内容,但什么也没有(这很愚蠢,如果文件被阻止,我如何从文件中获取 any 信息?),但在解除阻止之后,我可以读取整个文件。
标签: c# garbage-collection appdomain