繁体   English   中英

如何指定我的.NET互操作应该使用哪个COM服务器?

[英]How to specify which COM server my .NET interop should use?

我有一个使用COM服务器的.NET应用程序。 COM服务器在运行它的计算机上注册,因此当我的代码到达new MyInterop.SomeObject()将启动相应的MyComServer.exe

但是,在调试时,我在不同文件夹中使用不同的配置文件获得了MyComServer.exe多个副本。 我想指定应加载的应用程序。

我知道两种解决方法:

  • 我可以在使用之前每次都重新注册( MyComServer.exe /regserver )。 但是我不喜欢针对局部问题使用全局解决方案。
  • 我手动启动MyComServer.exe (然后将其作为独立应用程序运行),COM基础结构将重用此现有过程。 但这不是很自动化。

还有什么更合适的吗?

通过新的MyInterop.SomeObject()调用启动了COM服务器.exe。 毫无疑问,您运行着这么多.exe,是因为您在调试时终止了该程序,而没有允许.NET正常关闭并减少终结器线程中的引用计数。 COM没有清除这些丢失的引用的机制。 只需使用Taskmgr.exe的“进程”选项卡杀死正在运行的实例。

COM具有通过ROT(运行对象表)附加到服务器的运行实例的机制。 但是,这不是您以后可以使用的,它必须由服务器明确支持。 如果您必须选择修改服务器,则可以考虑将其设置为进程内服务器。 麻烦少得多。

您可以尝试根据调试版本动态创建配置文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM