我正在尝试实现以下功能,我觉得我非常接近,但还没有完全实现。我发布这个问题,看看是否有人可能已经做过类似的事情,对如何最好地实现这一点有一些见解。
在一个应用程序中(称之为MainApp)我正在创建我需要从另一个应用程序访问的COM对象(称之为工具)。为此,我需要将MainApp中的对象注册到ROT。由于超出此问题范围的原因,我使用的是作为服务运行的自定义IRunningObjectTable实现;此外,COM对象需要在创建时将自己注册到ROT中,并在不再需要时自行注销。这意味着ROT必须只保存对COM对象的弱引用,并且不得延长它们的生命周期。
此外,当COM对象仍然存在时,可能会关闭ROT。这不得导致MainApp中的泄漏或崩溃。
工具将询问ROT并获取已注册对象的接口。它将从对象中提取信息并在执行此操作时将其保持活动状态,但在完成后立即释放它们。
我面临的主要问题与实施弱表注册和让COM对象注册和撤销自身有关,而不是由其创建者注册或撤销。
感谢您的任何提示。