我們正在從一臺Mainframe 3270客戶端切換到另一個 - Attachmate Reflection到Bluezone。 Reflection有一個很好的.NET API,但訪問Bluezone的唯一方法是通過COM。.NET後臺工作人員無法在前臺看到COM對象
我有在表示任一反射或Bluezone對象的溶液共同的類,並將其抓住現有的客戶機,不管它正好是,並與其通信。
大多數情況下,一切工作正常。當我通過任何項目訪問Bluezone COM對象時,它的功能就像Reflection一樣。
問題似乎是當我訪問後臺工作者內的Bluezone對象時。後臺工作人員似乎無法在主線程上看到COM對象。
當評估在調試模式下的COM對象,所有屬性的顯示與錯誤「功能評估需要所有的線程來運行」的錯誤。
我知道這是一個長鏡頭,但沒有人知道的方式來管理這個,所以我可以在後臺線程中訪問一個前景COM對象?
我對許多問題的供應商合作,他們也都非常好,但我有一種感覺,這可能是一個.NET/COM的事情。
我的最後一招是去除所有的後臺工作人員,使用戶處理畫面凍結,但我真的很討厭這樣做。我的另一個選擇是在後臺工作者中實例化COM對象,但是這個操作有一定的成本。我試圖Marshal.GetActiveObject("")
,但它不起作用,或者我不知道應用程序的正確名稱。
如果任何人有與COM和後臺工作者類似的經驗,我會歡迎任何見解。
您使用的是什麼.NET版本?您可以發佈代碼如何結合COM和BackgroundWorker? – Sievajet