Ant*_*ers 5 c# com com+ process
我正在使用“DllSurrogate”方法来允许 64 位 C# exe 与 32 位 C# dll 对话。将.NET DLL 作为进程外 COM 服务器 (EXE) 托管中描述了该方法。
当应用程序运行一个名为“dllhost.exe *32”的额外进程时,会自动显示在任务管理器中,并带有描述“COM Surrogate”。这是应用程序和 32 位 dll 之间的链接。
我遇到的问题是,当应用程序退出时,这个进程没有被终止。有人可以建议处理这个问题的推荐方法吗?
我可以找到该进程并在我的应用程序关闭时终止它,但我需要确保:
我的应用程序和此流程之间是否有更直接的链接可供我检查?
拒绝终止的 COM 代理通常表示对尚未CoClass释放的 或 资源的未完成引用。ReleaseComObject您可以通过使用或 来强制释放FinalReleaseComObject。但是,在使用此方法时,您应该了解相关风险,如此处所述。
如果除了手动终止 COM 代理之外您仍然没有其他方法,则需要枚举dllhost.exe计算机上的所有进程。提取每个候选者的命令行并查找参数/ProcessId。GUID如果它与您的匹配CoClass,那么您就找到了匹配项。