c excel закрыть процесс

Я оттуда всё прочитал, либо убивают все процессы подрят, либо есть последний вариант, когда удаляют только один процесс с конца, он он работает некорректно, если уже открыт документ(он считается за последнего) и убивается не тот процесс.

В программе на C# работаю с книгой Excel следующим образом.

После выполнения этого кода процесс EXCEL.EXE продолжает висеть в диспетчере задач, но завершается после закрытия моей программы. Если убрать последние 3 строчки, то процесс висит в диспетчере и не завершается после закрытия моей программы. Как же правильно закрыть Excel?

2 ответа 2

Необходимо освобождать все используемые COM-объекты с помощью Marshal.ReleaseComObject .

Кроме того, есть такое правило:

Никогда не используйте две точки с объектами COM.

Когда вы пишете:

тут на самом деле создаются два COM-объекта. Оба нужно освободить после окончания работы с ними. Поэтому нужно разбить это выражения на два, с сохранением каждого COM-объекта в переменной.

Кроме того, желательно предусмотреть гарантированное освобождение даже в случае исключений. Финальный код может выглядеть примерно так:

Так нужно поступить со всеми используемыми COM-объектами.

Ваш код работы с Excel должен располагаться в блоке try , код закрытия и освобождения всех используемых ресурсов — в блоке finally .

Решение конкретных вопросов

четверг, 15 января 2015 г.

Корректное закрытие Excel в приложении на C#

Если вы заметили, что после закрытия приложения в процессах висит процесс Excel, значит вы не правильно закрываете книгу Excel. Вот корректный вариант:

_excelAppWorkBook — конкретная книга;
_excelApp — приложение Excel.

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: