进程外COM服务器

时间:2014-01-27 21:49:20

标签: c# com

我有一个64位进程,我有一个32位DLL。我在一个进程外的COM服务器中托管了DLL; COM服务器是可执行应用程序(即代理进程)。问题是,每当我的64位进程突然退出时,服务器无法确定没有更多对该对象的引用并退出?

任何帮助!

1 个答案:

答案 0 :(得分:1)

让您的64位进程创建一个名为mutex的进程。让你的32位COM服务器监视互斥锁,当无效/关闭时(即由于崩溃),只需关闭/停止/终止。

如果您需要一个支持多个不同进程的解决方案,那么需要每个进程调用某些类型的初始化函数(到您的COM服务器),该函数传递一些共享句柄(互斥或其他),并且您的COM服务器可以添加它到列表。当所有句柄无效或关闭时,请关闭。

你也可以使用一个文件 - 64位进程使用LockFile(或独占的打开文件/ etc)锁定文件中的一个字节,COM服务器每隔几秒就会尝试锁定一个文件,如果可以,则关闭。 / p>

关键是,使用任何在进程崩溃时关闭/无效的句柄或方法,这样其他进程就可以检测到它。如果您不想要额外的句柄,只需使用过程本身的句柄。命名的互斥锁可能最容易实现,但不需要额外的函数或传递句柄。