避免VSTO,Word自动化计时RPC_E_CALL_REJECTED错误

时间:2015-02-24 19:42:16

标签: vb.net vba vsto

我正在编写一个VSTO VB.NET应用程序,它使用标准功能控制Word文档,例如复制,粘贴,插入文本和页面,而不是其他线程。我在不同时间收到以下错误:呼叫被被叫方拒绝。 (来自HRESULT的异常:0x80010001(RPC_E_CALL_REJECTED))。

这似乎是Word的计时问题,因为它几乎随机地失败但仅在Word调用上失败。在调试器中,我可以单击继续,代码将恢复。

我已经看到很多关于此的评论,相关的评论似乎与COM IMessageFilter接口有关。但他们都跳过了一个重点:我只想等待Word再次获得自由,然后继续。我不想提示用户使用选项(例如使用RetryRejectedCall)。现在一个丑陋的工作是有意延迟,比如Threading.Thread.Sleep(500),但这几乎不是解决方案,而且许多电话也是不切实际的。

处理此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

很可能您正在使用辅助线程中的Word对象模型。 Office应用程序使用单线程单元模型。建议不要使用辅助线程中的任何对象模型。

另外,您可能会发现similar forum thread有帮助。