#c_sharp #net #com
Использую для своего приложения MVC парсер для word документа. Я заметил что после
того как парсер отработает, документ остаётся в памяти.
Использовал метод :
Marshal.ReleaseComObject(Doc);
Marshal.ReleaseComObject(MSWord);
но он не помогает, объект всё ещё висит в памяти.
Как удалить объект типа System.__COMObject из памяти?
Проблемные строки:
Word.Application MSWord = new Word.Application();
Word.Document Doc = MSWord.Documents.Open(urlDocMenu, ConfirmConversions: true);
После этих строк появляется объект в памяти и я не знаю как его удалить
Ответы
Ответ 1
По-моему, код может быть примерно таким: var wordApp = new Microsoft.Office.Interop.Word.Application(); wordApp.Visible = true; var doc = wordApp.Documents.Open(urlDocMenu); ... doc.Close(); wordApp.Quit();Ответ 2
Согласно информации из msdn Marshal.FinalReleaseComObject(Val) гарантированно уберет все ссылки и позволит закрыться объекту.Ответ 3
По моему app.Quit() работает корректно, но можно еще и попробовать поставить значение app = null потом вызвать сборщика мусора GC.Collect().
Комментариев нет:
Отправить комментарий