Что использовать вместо Marshal.ReleaseComObject при очистке Interop.Excel объектов?

голоса
0

Я создаю приложения Forms с помощью C # и библиотеки Interop.Excel для чтения и записи данных в электронную таблицу Excel. Существует проблема, где Excel будет порождать процессы, но они не будут закрывать даже после того, как я вызываю функцию, которая должна закрыть его. Вот пример моего кода обработки закрытия приложения Excel:

var excel = new Microsoft.Office.Interop.Excel.Application();
var workbooks = excel.Workbooks;
Workbook workbook = null;
Worksheet worksheet = null;
[insert code here where all the Excel spreadsheets are properly imported and exported ect]
workbook.Save();
workbook.Close(0);
workbooks.Close();
excel.Quit();

Я помню , что большинство ответов я нашел в Интернете , чтобы моя проблема рекомендовал мне использовать Marshal.ReleaseComObject (Excel); Или что-то в этом роде. Тем не менее, я также обнаружил , что Microsoft считает Marshal.ReleaseComObject опасным и рекомендует не использовать его.

Есть ли безопасный способ использовать Marshal.ReleaseComObject? Или есть другое решение моей проблемы?

Задан 20/10/2018 в 05:38
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more