Я оттуда всё прочитал, либо убивают все процессы подрят, либо есть последний вариант, когда удаляют только один процесс с конца, он он работает некорректно, если уже открыт документ(он считается за последнего) и убивается не тот процесс.
В программе на 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.