apartments

    1熱度

    2回答

    我很難在outprocess環境中理解COM公寓。 基本上我不明白爲什麼客戶需要撥打CoInitializeEx在公寓註冊它自己的線程。 我可以理解生活在STA或MTA中的服務器線程和服務器線程所使用的對象。但我不明白爲什麼客戶端應該關注這一點。 每份文件/指南都說客戶必須致電CoInitializeEx在公寓註冊。這是否意味着服務器保持跟蹤客戶端的線程? 或者公寓數據也分配在客戶端進程中?

    2熱度

    1回答

    進程COM服務器我有一個出進程內COM(ATL)服務器的已創建爲自由線程(CComMultiThreadModel) 我對如何,涉及到的重入略有困惑調用我的對象,例如我假設我可以同時從多個客戶端調用並同時處理這些請求,但似乎(根據我的日誌)每個請求都被序列化。 我錯過了什麼,是否簡單地創建一個類作爲MTA意味着它真的是或有其他事情我必須做。請注意,我在這裏指的是多個進程都在進行併發調用,而不是單個

    0熱度

    1回答

    長話短說:在C#應用程序與COM進程內服務器(DLL)的作品,我會遇到‘0x80010100:系統調用失敗’異常,並在調試模式下也ContextSwitchDeadlock例外。 現在,在細節更: 1)C#應用程序初始化STA,創建一個COM對象(登記爲「單元」);然後在訂閱了它的連接點,並開始與該對象工作 2)在某些階段的COM對象產生了很多的事件,作爲參數傳遞COM objec非常大集合ts,

    0熱度

    1回答

    我測試了一個自定義的類工廠,將使用coregisterclassobject註冊,我注意到它會導致線程問題。 我創建了一個測試com對象並創建了它的一個實例,並且所有事情都按預期行事。這是一個inproc服務器,在註冊表中,它的ThreadingModel是「Apartment」。如果我使用apartment_threaded調用CoInitializeEx,它會在同一個線程上創建對象,如果我使用

    2熱度

    1回答

    我正在尋找說明在ATL COM服務器DLL中進行交叉線程COM調用的代碼示例。知道嗎? 更多細節: 我的組件是一個IE瀏覽器輔助對象,它需要做在後臺線程的工作。在IE的主線程中調用的一個對象方法中,IE給我一個指向IE DOM(IHtmlWindow2)的指針,並將其存儲在本地成員變量中。 現在我想創建一個工作線程,它可以異步調用我剛存儲的那個COM接口指針的方法。 如果很重要,我從我從IE獲得接

    0熱度

    2回答

    即使租戶已存在,執行Apartment::Tenant.switch!("tenant_name")時出現錯誤。 當我運行公寓:: tenant_names,它返回數組包含["murah5","rahmatullah","test"]然後我運行Apartment::Tenant.switch!("murah5")它返回: Apartment::TenantNotFound: One of the

    0熱度

    1回答

    我試圖使用CoRegisterClassObject來定製我加載的DLL的COM對象在他們的方式。我正在嘗試一些解決當線程的公寓類型與com對象不匹配時遇到的問題。基本思想是,由於使用coregisterclassobject在創建com對象時會忽略註冊表,所以我需要確保STA對象在STA線程中創建,並且對於MTA對象也是如此。以下是我寫作的一個樣本,作爲概念證明,並不總是按照我的預期行事。 LP

    -1熱度

    1回答

    我正在編寫一個Wcf服務庫並希望加載一個非託管的com DLL。在COM DLL線程模型不設置,只有運行在主STA threading model 在WCF服務,所以它是一個單線程的舊式組件,我已經設置了公寓爲STA現在like ,當我嘗試創建COM組件的情況下,當我調試COM DLL和它拋出一個錯誤RPC_E_WRONG_THREAD給出了一個例外 System.Runtime.InteropS

    3熱度

    1回答

    我正在使用VOIP客戶端(窗口窗體)在打電話或收到呼叫時打開瀏覽器窗口(ExtendedWebBrowser)。通常它工作正常,但如果計算機進入休眠模式,然後喚醒程序將具有以下錯誤崩潰: "System.Threading.ThreadStateException crossed a native/managed boundary Message=ActiveX control '885

    0熱度

    1回答

    當我創建Thread時,我可以選擇在啓動它之前明確設置其COM組件狀態。舉例來說: // using System.Threading; var thread = new Thread(…); thread.SetApartmentState(ApartmentState.STA); thread.Start(); 但是,當我創建一個AppDomain並加載一些代碼進去,我似乎已經超過線