2016-03-06 36 views
0

我有一個在Delphi西雅圖編寫的Win32.exe,實現一個功能的COM接口。
如果我從程序本身調用CreateOleObject(),我很困惑服務器的行爲。
實例化模型設置爲ciSingleInstance,所以我希望每次調用都會創建一個新實例(假設前面的實例仍在運行)。德爾福.exe COM服務器開始奇怪

究竟發生了什麼是第一次調用不會創建一個新的實例,但是第二次調用會發生。
如果第一次調用運行完成,則第二個實例會再次創建一個新實例,即使程序應該恢復到其默認狀態。

我如何

一)力創建二審在第一次通話,或
b)該程序返回到真正的默認狀態,以便多個運行完成不啓動的第二個實例。

+1

默認狀態是「只接受一次'CoCreateInstance'調用,用於此進程的整個生命週期」。鑑於此,您的程序似乎按預期工作。你可能通過「CoCreateInstance」以外的方式來運行它,所以它仍然等待它的唯一'CoCreateInstance' - 但一旦它得到它,它將不再需要。 –

+0

「每過程生命週期一次」解釋事情和方法,如果我調用CreateOleObject()一次,如果程序沒有被自動化,則給出我的第一個問題的答案。非常感謝。 – user3359525

回答