2011-02-10 64 views
2

我有一個COM類。它可以被我自己以外的進程訪問。每個進程創建它自己的類實例。有沒有辦法讓COM對象在CreateInstance()的所有進程中共享?ATL COM類的單個實例

COM Singleton是唯一想到的東西。不過,我沒有任何使用這方面的經驗。

回答

2

我繼承的代碼庫通過在COM項目中聲明一個靜態的'實現'實例來完成這個任務。

COM類只提供該實例的接口。這樣,COM類的多個實例就可以有效地訪問COM服務器中的單例實現對象。

請注意,這通常需要同步結構。

+0

CreateInstance(...,CLSCTX_SERVER,...)完成同樣的事情嗎?基本上實例在服務器端,客戶端只連接到它? – MarkP 2011-02-10 17:02:16

+0

如果它在DLL中,它不會失敗。 CLSCTX_SERVER意味着存在一個獨立的EXE服務器,並且可以作爲一個進程運行。 COM +是你的朋友。 – 2011-02-10 17:04:07

0

進程外服務器中的COM單例。如果服務器已經在DLL中實現,請考慮使用COM +將其配置爲進程外。這樣,你會得到兩全其美。