如何从C#自动化时提高打开Microsoft Word的性能?

时间:2010-03-20 08:18:47

标签: c# ms-word office-interop

我有Microsoft Word模板,我自动从我的应用程序填写它的字段,当用户请求打印时,我打开此模板。

但是每次用户在填充字段后请求打印时创建Word应用程序都非常昂贵,并且在打开模板时可能会导致一些延迟。所以我选择缓存对Word的引用,然后打开新填充的模板。

这解决了性能问题,因为打开文件比每次重新创建Word要便宜,但这仅在用户关闭文档而不是整个Word应用程序时才有效。发生这种情况时,我对Word的引用变为无效,并在下一次打开模板请求时返回异常:“ RPC服务器不可用”。我尝试订阅BeforeClosing事件,但这会触发退出Word以及关闭文档。

我的问题是如何知道Word是关闭文档还是退出整个应用程序,以便我采取适当的措施,或任何暗示提高打开Word模板性能的另一个方向。

1 个答案:

答案 0 :(得分:3)

我不熟悉如何正确订阅Word结束事件。但似乎您可以选择的一个选项是乐观地假设Word未关闭并使用您的缓存路由。在较高级别捕获Word关闭时抛出的Exception类型。如果遇到此异常,请删除对word的引用,并重复第一次发生的操作。

您不会一直以这种方式获得缓存。但是您将能够利用用户仅关闭文档的情况。