2008-09-19 47 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