С# MSOffice Interop Word не будет убивать winword.exe

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

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

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 4

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

Ответ 5

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