2008-09-19 50 views
4

我在寫一個充當PowerPoint 2007插件的C#程序。在某些機器上,某些對PowerPoint對象模型的調用會拋出COMException,並顯示RPC_E_SYS_CALL_FAILED消息。我找不到有關此錯誤的具體建議,或者如何避免此錯誤。從谷歌搜索它看起來像消息隊列或單線程公寓。還是我離開?該錯誤消息的C#COM辦公自動化 - RPC_E_SYS_CALL_FAILED

實施例是:

系統調用失敗。 (異常來自HRESULT:0x80010100(RPC_E_SYS_CALL_FAILED))
在Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName()

不幸的是,問題發生在客戶端機器上,所以我有沒有簡單的方法調試它!我是否應該在遇到此錯誤時重試呼叫?

任何意見,以幫助我解決這個問題將不勝感激!

回答

0

你是否正在使用其ApartmentState集進行線程調用?如果沒有,那可能是罪魁禍首 - COM互操作是相當挑剔之類的事情

0

什麼是客戶端的安全設置?客戶端的安全設置(Windows/OS設置或PowerPoint/App設置)很可能不允許您的插件通過RPC進行通信。

0

這如果您對從後臺線程PowerPoint對象模型中的任何電話很容易發生。一種合理的方案是定期檢查某種狀態值。如果定時器觸發時,Powerpoint繁忙(例如打開對話框),則呼叫將失敗。

本Microsoft文章概述了Office中的線程支持: http://msdn.microsoft.com/en-us/library/8sesy69e.aspx