2011-06-22 26 views
2

Ref:https://connect.microsoft.com/VisualStudio/feedback/details/457217/reg-free-com-fails-when-threaded#tabs如何在非UI線程中使用免註冊的COM?

當在非UI線程中使用無reg的COM DLL(isolated = true)時,我得到「無法投射類型爲COM的對象」。如果在UI線程中調用DLL,則不是這種情況。然而,就我而言,我有一些相當耗費資源的電話,有沒有辦法解決這個問題?

+0

庫中聲明的類型支持哪些COM公寓模型?對於那些依賴於「Single」的類型,除了使用初始線程(通常是UI線程)之外,不可能繞過這一點。 – meklarian

+1

您是否嘗試將工作線程的公寓狀態設置爲STA? –

+0

我認爲這是一個明顯的問題。 – tofutim

回答

0

解決此問題的最佳解決方案是調用主線程中的com調用,即使您使用的是其他方法。您可以通過在與com通信的類中實現ISynchonizeInvoke來完成此操作,請檢查this

+0

@tofutim:你試過這個嗎?這是否解決了你的問題? –