Правильный способ закрытия приложения Excel

Я пишу приложение, которое обращается к файлу Excel с помощью этого кода:

RBTApplication = new Excel.Application();
RBTWorkbooks = RBTApplication.Workbooks;
RBTWorkbook = RBTApplication.Workbooks.Open(
    RBTDataSet.Instance.FilePath, 0, true, 5, "", "", true,
    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
    "\t", true, false, 0, true, 1, 0 );
RBTWorksheet = (Excel.Worksheet)RBTWorkbook.Worksheets.get_Item( 1 );
RBTRange = RBTWorksheet.UsedRange;

После загрузки нужных мне данных я пытаюсь закрыть приложение Excel следующим фрагментом кода:

RBTWorkbook.Close();
RBTApplication.Quit();
RBTWorksheet.ReleaseComObject();
RBTWorkbook.ReleaseComObject();
RBTWorkbooks.ReleaseComObject();
RBTApplication.ReleaseComObject();

Моя проблема в том, что процесс EXCEL.EXE все еще работает. Простое решение, такое как уничтожение всех процессов Excel, звучит не очень хорошо, так как мой процесс может быть одним из многих электронных таблиц, используемых одновременно. Это также влияет на открытие новых таблиц Excel - каждое открывается только для чтения, пока я не убью этот процесс.

Итак ... как правильно закрыть это приложение ИЛИ уничтожить этот конкретный процесс (есть ли способ получить PID из COM-объекта?). Я думаю, что нашел один (не пробовал) - получить список процессов exll до и после открытия нового ExcellApp, сравнить списки (получить разницу), убить определенный процесс, зная его PID. Но это решение не похоже на правильный способ обработки COM-объектов и других приложений из моего приложения.

Ответы на вопрос(1)

Ваш ответ на вопрос