25.08.2010, 18:59 | #1 |
Участник
|
Иморт из Excel 2010. Как правильно закрыть Excel?
Доброго времени суток.
Столкнулся с проблемой в аксапте при работе с 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"); } Вот примеры: 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. |
|