我正在编写一个C#程序,充当PowerPoint 2007插件。在某些机器上,对PowerPoint对象模型的一些调用会抛出带有消息RPC_E_SYS_CALL_FAILED的COMException。对于如何处理这个错误,或者如何避免这个错误,我找不到任何具体的建议。从谷歌上看,这似乎与消息队列或单线程公寓有关。还是我离得太远了?
错误消息的示例是:
系统呼叫失败。(HRESULT例外: 0x80010100 (RPC_E_SYS_CALL_FAILED)) 在Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName()
不幸的是,这个问题发生在客户端的机器上,所以我没有简单的方法来调试它!当我遇到这个错误时,我应该重新尝试调用吗?
任何帮助我解决这个问题的建议都将不胜感激!
发布于 2008-11-26 21:48:11
我不知道这与您的问题有关,但是您的所有COM调用都必须来自创建外接程序的同一个线程。如果您创建了新线程,则必须特别小心。详细情况见这两篇文章:
发布于 2008-09-19 04:22:47
您是从一个具有ApartmentState集的线程进行调用吗?如果不是,那可能是罪魁祸首- COM interop对这类事情相当挑剔。
发布于 2008-10-24 18:16:01
客户端的安全设置是什么?客户端的安全设置( Windows/OS设置或PowerPoint/App设置)很可能不允许您的插件通过RPC进行通信。
https://stackoverflow.com/questions/99271
复制相似问题