我正在编写一个需要MSWord文档解析器的应用程序。
我正在使用Microsoft.Office.Interop.Word.Document从文档中提取文本,但即使我使用doc.Close()文件,从taskManager我可以看到winword.exe没有被杀死,在解析了几十个文档之后,它会耗尽一些资源。
是close()错误的方法吗?
请帮助我,并指出如何正确终止这些流程的正确方向。 =)
~~~更新~~~
感谢所有帮助。我使用app.quit()并运行一个循环来检查进程并解决问题! =)
答案 0 :(得分:17)
您是否正在调用Application.Quit,此外,因为您正在使用Interop,因此发布RCW wrapper可能是值得的。
所以基本上是这样的:
yourWordAppObject.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordAppObject);
请注意,有些人会使用:ReleaseComObject,但有一些potential pitfalls
答案 1 :(得分:3)
您必须使用app.quit()退出应用程序实例。 Document.close()将关闭文档。我还建议您在完成处理后设置app.visible = true,这样如果所有其他方法都失败,您的用户可以自行关闭它。
答案 2 :(得分:2)
如果您要结束此过程,则需要致电Quit
对象上的Application
- 请参阅http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationclass.quit%28v=office.14%29.aspx
答案 3 :(得分:2)
执行app.Quit()后,你必须执行app = null;根据我的经验,这将防止剩余的进程闲逛。请务必在异常处理程序中执行app.Quit()和app = null。
答案 4 :(得分:0)
我正在考虑关闭只是处理单词中打开的文档。请记住,您可以使用1个应用程序打开多个单词文档。您可能想尝试使用dispose方法,或者查看单词对象退出/退出方法(不记得它已经有一段时间了)。