我使用'DllSurrogate'方法允许64位C#exe与32位C#dll通信。 该方法在Hosting a .NET DLL as an Out-Of-Process COM Server (EXE)中描述。
当App运行时,名为“dllhost.exe * 32”的额外进程会自动显示在任务管理器中,其描述为“COM Surrogate”。 这是App和32位dll之间的链接。
我遇到的问题是,当应用程序退出时,此过程不会被终止。 有人可以提出建议的处理方法吗?
我可以找到该过程并在我的应用程序关闭时将其终止,但我需要确保:
我可以检查我的应用程序与此流程之间是否存在更直接的链接?
答案 0 :(得分:3)
拒绝终止的COM代理通常表示对CoClass
或资源的未完成引用,但尚未发布。您可以通过ReleaseComObject
或FinalReleaseComObject
强制执行此版本。但是,使用此方法时,您应该了解相关风险,如here所述。
如果您仍然没有看到除手动终止COM代理之外的其他方式,则您需要枚举计算机上的所有dllhost.exe
进程。提取每个候选项的命令行并查找/ProcessId
参数。如果它与GUID
的{{1}}匹配,则表示您找到了匹配项。