c# moffice互操作Word不会杀死winword.exe

本文关键字:winword exe moffice 互操作 Word | 更新日期: 2023-09-27 18:05:44

我正在编写一个需要MSWord文档解析器的应用程序。

我正在使用Microsoft.Office.Interop.Word.Document从文档中提取文本,但即使我使用doc.Close()文档,从taskManager中我可以看到winword.exe没有被杀死,并且在解析了几十个文档后,它消耗了一些资源。

是close()错误的方法?

请帮助我并为我指出正确的方向,如何正确地终止这些过程。=)

更新~ ~ ~ ~ ~ ~

谢谢你的帮助。我使用app.quit()并运行了一个循环来检查进程和问题解决!div =)

您正在调用应用程序吗?退出,另外,由于您正在进行互操作,因此释放RCW包装器可能是值得的。

基本上是这样的:

yourWordAppObject.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordAppObject);

注意有些人使用:ReleaseComObject,但是有一些潜在的缺陷

c# moffice互操作Word不会杀死winword.exe

必须使用app.quit()退出应用实例。document. close()只会关闭文档。我还建议设置app.visible = true当你完成处理,这样你的用户可以关闭它自己,如果所有其他失败。

在执行app. quit()之后,你必须执行app = null;从我的经验来看,这将防止剩余的进程徘徊。只是要确保在异常处理程序中也执行app. quit()和app = null。

如果您想结束进程,您需要在Application对象上调用Quit -参见http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationclass.quit%28v=office.14%29.aspx

我认为关闭只是处理文档打开里面的话。记住,一个应用程序可以打开多个word文档。您可能想尝试使用dispose方法,或者查看单词对象的quit/exit方法(不记得已经有一段时间了)。