Доброго времени суток.
Столкнулся с проблемой в аксапте при работе с excel 2010, после excel.quit() приложение все равно висит в процессах. С предыдущими версиями еселя таких проблем нету.
Вот пример работы с файлом excel
X++:
static void testImport2(Args _args)
{
FileName filenameOpen = @"С:\test.xls";
COM com;
SysExcelApplication Excel;
SysExcelWorkbooks books;
InteropPermission comPermission;
;
comPermission = new InteropPermission(InteropKind::ComInterop);
Excel = SysExcelApplication::construct();
excel.visible( false);
excel.displayAlerts(false);
books = Excel.workbooks();
books.open( filenameOpen);
books.close();
books = null;
//com = books.comObject();
//com.close();
//com.finalize();
//com = null;
excel.quit();
excel.displayAlerts(true);
excel = null;
CodeAccessPermission::revertAssert();
info( "End");
}
Самой интересное, что любые существующие рецепты, не только в аксапте, сводятся к тому, чтобы закрыть и явно удалить сом объект workbooks,. и закрывать приложение ексель, с явным удалением сом объекта, как в представленном примере.
Вот примеры:
http://social.msdn.microsoft.com/For...f-bd17fa70f379
http://social.msdn.microsoft.com/for...8-74793F297F13
http://social.msdn.microsoft.com/For...-353a5946f151/
http://msdn.microsoft.com/ru-ru/library/ee317478.aspx
Было предположение, что аксапта не корректно удаляет процесс. В качестве проверки, по представленным ссылкам был сделан примерчик на c#, консольное приложение (см. вложение) - результат тот же, с екселем 2010 процесс остается висеть, в поздних версиях процесс закрывается.
При этом, стоит отметить, что в excel 2010 увеличилось настроек безопасности, особенно по открытию файлов в защищенном режиме. Есть подозрение, что проблема как-то с этим связана, хотя минимизировал в них все ограничения - не помогло, может не то и не там настраивал.
Что посоветуете?
Dax 2009 Ru4, KernelVersion 5.0.1500.2116, Win2008 sp2, MS Sql 2008
MS Office 2010.