解决方案环境:
MS Visual Studio 2010 Ultimate,MS Office 2010 Professional,Microsoft Interop类
情景:
我创建了一个.Net应用程序,它使用Interop类与MS Word进行交互。考虑一下:一个模仿键值对表的应用程序。当用户单击“值”字段时,.net应用程序将打开一个winword窗口,用户可以在其中输入一些注释。单击关闭(winword)后,.net app将执行winword.wordopenxml并将数据保存在字段中。为此,我已经为winword添加了事件句柄。该应用程序运行完美。当我打开多个winword实例(由用户分开但不通过.net应用程序)时,会出现问题。来自.net应用程序的事件处理程序应用于winword的所有实例,因此,在关闭一个实例字时,所有其他实例也将关闭。我尝试了不同的方法来初始化应用程序中的单词对象。我还尝试了“初始化两个winword实例并退出第一个实例”的工作 - >这种方法也行不通。
大师:你能帮我找到合适的解决方案来解决这个问题吗?
-Rupesh
答案 0 :(得分:1)
这不是真正发生的事情。看起来你有多个Word运行实例,但实际上只有一个。 Word是一个非常大的程序,需要大量的系统资源。当用户启动另一个副本时,该副本将检查Word是否已在运行并要求它打开该文档。然后退出。原始实例只是创建了另一个窗口,否则它确实看起来与另一个Word实例完全相同。
因此,当您退出Word时,您也会杀死所有其他窗口。使用Taskmgr.exe,进程选项卡来验证这一点。作为解决方法,请考虑枚举Documents集合以查看还打开了哪些内容。