我有一個正常的Windows窗體程序(不VSTO),它使用部署單擊一次。問題是,用戶負載有與隨機誤差一般說明(從IClassFactory的失敗,原因是問題以下錯誤:80004005)贖回+的ClickOnce = :-(
林通過改變這似乎對一些用戶,但不是別人的工作模式爲「隔離」部署贖回
是arn't工作可以通過手動安裝固定的用戶。贖回DLL。
誰能解釋如何自動化過程(我真的希望它是REG免費的,所以用戶不需要管理員權限來安裝)。
感謝
羅斯
我有一個正常的Windows窗體程序(不VSTO),它使用部署單擊一次。問題是,用戶負載有與隨機誤差一般說明(從IClassFactory的失敗,原因是問題以下錯誤:80004005)贖回+的ClickOnce = :-(
林通過改變這似乎對一些用戶,但不是別人的工作模式爲「隔離」部署贖回
是arn't工作可以通過手動安裝固定的用戶。贖回DLL。
誰能解釋如何自動化過程(我真的希望它是REG免費的,所以用戶不需要管理員權限來安裝)。
感謝
羅斯
得到這個解決。問題是我在後臺線程上加載了兌換對象,並試圖在UI線程上操作它們。確保您在使用這些對象時保持一致。
Outlook Redemption(Redemption.dll)和Background Threading不混合。
您的情況類似,我們用的是後臺線程登錄到Exchange服務器。
這導致了不能夠登錄到交易贖回的間歇性錯誤。
而且,我的一個同事已經把電子郵件流行的呼叫在後臺線程,並再次,有時它會工作,有時不會。
使用Redemption時,總是讓主UI線程處理它的操作。
贖回並沒有真正鎖定的應用程序,也有真的沒有長時間運行的進程彈出的電子郵件時,添加新安排,甚至鉤住郵件發送贖回事件來處理通過電子郵件發送的信息記錄等
你錯了。您可以使用另一個線程的Redemption。 – 2014-12-19 18:21:06
如果你做得正確,完全可以在後臺線程中使用Redemption。您創建的第一個RDOSession對象必須在UI線程中創建,因爲某些MAPI內部部件需要在同一個線程中創建消息泵。通常,這個RDOSession應該保存在您的應用程序的整個生命週期中。您不能從任何其他線程訪問此對象。
您需要將第一個RDOSession的MAPIOBJECT屬性傳遞給每個工作線程,從每個線程內創建一個新的RDOSessuion對象,並將您的RDOSession的MAPIOBJECT分配給線程中創建的輔助RDOSession。例如:
(Aircode警告:下面的代碼從存儲器中鍵入)
Dim PrimaryRDOSession As New Redemption.RDOSession()
PrimaryRDOSession.Login([...])
Dim WorkerThread as New System.Threading.Thread(AddressOf ThreadProc)
WorkerThread.Start(PrimaryRDOSession.MAPIOBJECT)
Sub ThreadProc(ByVal param as Object)
Dim ThdRDOSession As New Redemption.RDOSession()
ThdRDOSession.MAPIOBJECT = param
' do other stuff
End Sub
從那裏,你可以做任何你通常與贖回做。如果Outlook對象被選中/位於一個線程中並在另一個線程中執行,您可以在線程之間傳遞EntryID。
試圖解釋問題時總是會更好:)我已經回答了我的很多問題。 – leppie 2009-07-26 14:47:05