Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Удаление COM объекта c#

#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().

Комментариев нет:

Отправить комментарий