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方法,或者查看单词对象退出/退出方法(不记得它已经有一段时间了)。