【发布时间】:2013-07-23 12:07:14
【问题描述】:
我正在使用一个 C# 程序,该程序利用 Microsoft Office 互操作,使您能够以编程方式使用 Microsoft Word、Excel 和 PowerPoint。
我遇到的一个不幸的方面是,程序有时会弹出一个对话框,暂停代码。例如,如果代码突然无法保存在您期望能够保存的位置,这可能会发生这种情况,这意味着即使该问题稍后得到修复,您的整个程序也可能会暂停。
还有很多其他情况可能会出现额外的对话框。
所以我的意图是为此实现某种超时机制,从而我可以终止 Interop 实例,而不是让我的整个程序被捆绑。谁能建议一种方法来做到这一点?目前它将 Interop 调用包装在 System.Action 中并在给定时间后中止该线程,但我想知道是否有更好的方法。
【问题讨论】:
-
我过去做过这样的事情。唯一要做的就是实际阅读您正在自动化的 VBA 代码,并对其进行测试,以便您知道对话框出现的时间和位置以及原因。然后你可以围绕它进行编程。相信我,从长远来看,它会让您的生活更轻松!
-
另外,Office Interop 的设计初衷不是在无人看管的情况下使用,其想法是您的最终用户会看到这些对话框并与它们进行适当的交互。如果您想要无人值守的办公自动化,您可以查看 OpenXML。
标签: c# ms-office office-interop