C# MSOffice Interop Word не убивает winword.exe
Я пишу приложение, которое нуждалось в парсере документов MSWord.
Я использую Microsoft.Office.Interop.Word.Document для извлечения текстов из документов, но даже если я использую документ doc.Close(), из taskManager я вижу, что winword.exe не уничтожаются, и после анализа пара десятков документов съедает много ресурсов.
close() неправильный метод?
Пожалуйста, помогите мне и укажите правильное направление, как правильно завершить эти процессы. знак равно
~~~ ~~~ обновление
Спасибо за помощь. Я использую app.quit(), а также запускаю цикл, который проверяет процесс и решенную проблему! знак равно
5 ответов
Вы звоните Application.Quit, кроме того, поскольку вы делаете Interop, возможно, стоит выпустить упаковщик RCW.
Так что в основном что-то вроде:
yourWordAppObject.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordAppObject);
Обратите внимание, что некоторые люди используют: ReleaseComObject, но есть некоторые потенциальные подводные камни
После выполнения app.Quit() вы должны сделать app = null; Исходя из моего опыта, это предотвратит зависание оставшихся процессов. Просто убедитесь, что app.Quit() и app = null также используются в вашем обработчике исключений.
Вы должны выйти из экземпляра приложения, используя app.quit(). Document.close() просто закроет документ. Я также предлагаю установить app.visible = true, когда вы закончите обработку, чтобы ваш пользователь мог закрыть его самостоятельно, если ничего не помогает.
Если вы хотите закончить процесс, вам нужно позвонить Quit
на Application
объект - см. http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationclass.quit%28v=office.14%29.aspx
Я думаю, близко, просто обрабатывает документ, открытый внутри слова. Помните, что вы можете открыть более 1 слова документа с помощью одного приложения. Возможно, вы захотите попробовать либо метод dispose, либо посмотрите на методы объектов выхода / выхода из слова (не помню, как давно).