簡體   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