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