3
我有一個多線程C++ Builder GUI應用程序,它通過COM與第三方應用程序進行通信。如何訪問來自不同公寓模型的COM對象?
我需要從幾個線程中調用COM對象的方法,並且使用互斥鎖來保護訪問。顯然,主要的GUI線程必須使用STA模型,但我的工作線程需要使用MTA。 COM對象在MTA線程中構造。
一切工作正常,除了由於MTA/STA不匹配,從GUI線程訪問COM對象。
我已經讀了一些關於編組,但還沒有試圖實現它,因爲我看到的例子似乎需要不同的訪問語義,取決於當前的公寓模型,我真的想要代碼(來自程序員的POV)不關心當前的公寓模型。
那麼,有沒有一種習慣寫COM代碼的方式來運行'相同'對象,但可以從STA和MTA線程中調用?
封送接口指針*爲必填*,你不能跳過它。 IGlobalInterfaceTable使其變得容易。 –
@Hans,是的,但是如果我有它的權利,一些線程需要編組指針,其他線程需要unmarshalled指針?我正在尋找一種方法來統一,或根據當前的線程公寓模型動態地切換哪個接口指針......? – Roddy
嗯,只是總是指揮指揮官。如果不需要進行公寓轉換,您只需獲得原件。 –