![](/img/trans.png)
[英]Which collection interface should I use in .NET for COM-interop?
[英]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.