Как закрыть excel. Пробую делать так:
private void CloseExcel()
{
try
{
// Quit Excel and clean up.
if (m_Workbook != null)
{
m_Workbook.Close(true, Missing.Value, Missing.Value);
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_Workbook);
m_Workbook = null;
}
if (m_XlApplication != null)
{
m_XlApplication.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_XlApplication);
m_XlApplication = null;
System.GC.Collect();
}
}
catch
{
MessageBox.Show("Failed to close the application");
}
}
и все равно не срабатывает Подскажите что не так.Зарание спасибо.
Если проверяешь на Debug-версии своего приложения, то попробуй проверить на Release-версии.
А вот у меня так:
if (excelApplication != null)
{
excelApplication.Quit();
ReleaseComObject(excelApplication);
}
GC.GetTotalMemory(true);
Тока вот пару замечаний:
1. У меня Excel работает в фоновом, невидимом режиме, и пока было так как у вас, он таки закрывался через некоторое время. Кажется мне, что оно так спецом сделано, чтоб если мы вдруг снова обратимся к Excel'ю вскоре, то он (так как остался открытый) быстрее нас 'обслужил'.
2. Вот здесь:
m_Workbook.Close(true, Missing.Value, Missing.Value);
могут быть (вроде как, не уверен точно) заморочки если .xls был предыдущей версии — типа он по идее должен окно какое-то показать, а показать не может, или наоборот — его показывает, но это пользователю не надо (вот не помню подробностей, но что-то в каком-то случае было)