作爲開發人員,我還沒有使用OLE/COM很長一段時間,但是我目前需要使用C#程序中的一些第三方OCX代碼庫。使用C#.NET中的OCX進行線程安全
C#程序使用線程(它是一個TCP套接字服務器)。 OCX被標記爲Apartment線程模型。從我的閱讀中,我得出結論,如果我小心地爲每個線程創建每個OCX的一個實例,並且只從創建它的線程使用該實例,那麼我應該沒問題。
,確實也做到: -
myThread.SetApartmentState(ApartmentState.STA);
啓動每個線程之前。
這應該足以確保安全使用OCX嗎?
我看到的症狀是,線程都可以創建OCX,但在顯然隨機的基礎上,準備和初始化OCX的調用失敗。他們似乎沒有回覆任何有用的信息,爲什麼。
任何人都可以解釋我所看到的,或給我一個指導,以安全地從線程代碼使用這些OCX?
或者,我應該放棄並在一個線程中創建每個和所有OCX的單個實例,並通過線程安全隊列或類似方式將所有調用發送給它們?
萬一它很有用,實際的錯誤是RPC_E_SERVERFAULT 0x80010105「服務器引發異常。」 我懷疑這會有幫助,因爲這個錯誤是如此通用。 – JohnCC 2011-02-11 22:08:32