我已經使用VC#爲另一個應用程序創建了一個UI前端(稱爲「B」)(我們稱之爲「A」)。 B是一個獨立的EXE,它必須是(因爲某些原因)由A.稱爲防止應用程序關閉時減少COM引用計數器
流動的電流(DLL是不可能的,因爲安全策略。):
- 啓動A (它充當COM服務器)。
- 讓A使用system()調用來執行B.
- B創建一個COM連接到A.
- 用戶關閉乙
- A閉合,太。 < < <這是問題所在!
所需流量是:
...(5)一種未關閉。
據我所知,我認爲造成不良行爲的原因是COM參考計數器自動減少。因爲B正在使用現有的A實例,所以計數器先前爲1,因此減少爲0,導致A完全關閉。(這是一個真正的問題,因爲此時用戶可能會丟失A中的數據。)
我已經試圖影響GC保持活着,但沒有成功。
的問題是:
如何防止甲的關閉,例如,通過避免參考計數器的遞減?
聲音就像引用計數在另一端是錯誤的 - 如果A引用了自身(1),那麼當B創建引用時,它應該增加(2)。然後,當B關閉時,它的引用應該被正確地移除(1),但是如果需要的話,A仍然應該有自己的引用。 –
這可能是這種情況,因爲應用程序A「以某種方式」COM,但可能不是「真正」。 – Hardy