c # MSOffice Interop Word не убивает winword.exe - PullRequest
12 голосов
/ 16 августа 2011

Я пишу приложение, для которого требовался анализатор документов MSWord.

Я использую Microsoft.Office.Interop.Word.Document для извлечения текстов из документов, но даже если я использую документ doc.Close (), из taskManager я вижу, что winword.exe не убиваются, и после разбора пары десятков документов он съедает много ресурсов.

это close () неправильный метод?

, пожалуйста, помогите мне и укажите правильное направление, как правильно завершить эти процессы. =)

~~~ обновление ~~~

Спасибо за помощь. Я использую app.quit (), а также запускаю цикл, который проверяет процесс и решенную проблему! =)

Ответы [ 5 ]

17 голосов
/ 16 августа 2011

Вы звоните Application.Quit , кроме того, поскольку вы делаете Interop, возможно, стоит выпустить RCW оболочку .

Так что в основном что-то вроде:

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

Обратите внимание, что некоторые люди используют: ReleaseComObject , но есть некоторые потенциальные ловушки

3 голосов
/ 16 августа 2011

Вы должны выйти из экземпляра приложения, используя app.quit ().Document.close () просто закроет документ.Я также предлагаю установить app.visible = true, когда вы закончите обработку, чтобы ваш пользователь мог закрыть его самостоятельно, если ничего не помогает.

2 голосов
/ 16 августа 2011

После выполнения app.Quit () вы должны сделать app = null; Из моего опыта это предотвратит зависание оставшихся процессов. Обязательно сделайте app.Quit () и app = null также в вашем обработчике исключений.

2 голосов
/ 16 августа 2011

Если вы хотите завершить процесс, вам нужно вызвать Quit для объекта Application - см. http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationclass.quit%28v=office.14%29.aspx

0 голосов
/ 16 августа 2011

Я думаю, близко, просто обрабатывает документ, открытый внутри слова. Помните, что в одном приложении можно открыть документ из более чем одного слова. Возможно, вы захотите попробовать либо метод dispose, либо посмотреть методы выхода / выхода из объектов word (не помню, как это было давно).

...