我正在编写一个VSTO VB.NET应用程序,该应用程序使用诸如复制,粘贴,插入文本和页面等标准功能来控制Word文档,并且不需要其他线程。我在不同的时间收到以下错误:呼叫被被叫方拒绝。 (来自HRESULT的异常:0x80010001(RPC_E_CALL_REJECTED))。避免VSTO,Word自动化计时RPC_E_CALL_REJECTED错误
这似乎是Word的计时问题,因为它几乎随机地失败,但只在Word调用中失败。在调试器中,我可以点击继续并且代码恢复。
我见过很多关于此的评论,相关的似乎是关于COM IMessageFilter接口。但他们都忽略了一个重要的观点:我只想等待Word重新获得自由,然后继续。我不想用选项提示用户(例如使用RetryRejectedCall)。现在一个丑陋的工作是有意拖延,如Threading.Thread.Sleep(500),但这并不是解决方案,而且许多调用也是不切实际的。
处理此问题的正确方法是什么?
谢谢。我没有明确使用线程或后台工作。您的链接提到使用XML或暂停唤起的类。你有你喜欢的例子吗?我从来没有像这样使用过。 – ForEachLoop 2015-02-25 14:28:14
不,我没有任何样品。 – 2015-02-25 14:33:26