2
我有一個64位進程,我有一個32位DLL。我在一個進程外的COM服務器上託管了DLL; COM服務器是可執行的應用程序(即代理過程)。問題是,無論何時我的64位進程突然退出,服務器都無法確定不再有對該對象的引用並退出?進程外COM服務器
任何幫助!
我有一個64位進程,我有一個32位DLL。我在一個進程外的COM服務器上託管了DLL; COM服務器是可執行的應用程序(即代理過程)。問題是,無論何時我的64位進程突然退出,服務器都無法確定不再有對該對象的引用並退出?進程外COM服務器
任何幫助!
讓您的64位進程創建一個名爲mutex。讓你的32位COM服務器監視該互斥鎖,並且當無效/關閉(即 - 由於崩潰)時,就關閉/停止/終止。
如果您需要一個支持多個不同進程的解決方案,那麼需要每個進程調用某種類型的初始化函數(對於COM服務器),它傳入某個共享句柄(互斥鎖或其他),並且COM服務器可以添加它到一個列表。當所有手柄都無效或關閉時,關機。你也可以使用一個文件--64位進程使用LockFile(或獨佔的打開文件/ etc)鎖定一個文件中的一個字節,COM服務器每隔幾秒就嘗試鎖定文件,如果可以的話,關閉。
問題是,使用任何在進程崩潰時會關閉/無效的句柄或方法,這樣其他進程就可以檢測到它。如果你不需要額外的處理,只需使用處理本身的句柄。該命名的互斥體可能最容易實現,但不需要額外的函數或傳遞句柄。
阻止您的64位進程突然退出。 (或者你真的認爲它存在的時候*是突然的嗎?) – abelenky
是的,我的意思是當它突然存在時。 – hiddenUser
[** Exists **](http://www.thefreedictionary.com/exists)或[** Exits **](http://www.thefreedictionary.com/Exits)?? – abelenky