|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
И это тоже. Excel (как мне сейчас кажется) не есть панацея.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Продолжим твой код. Ведь мало получить указатель на Excel. Главное - открыть в нём xls-файл и продолжить работу с ним.
Код:
Т.е. получаются выводы такие: 1. Если где либо пропущен vlax-release-object, то (gc) не поможет - процесс Excel останется висеть в памяти. 2. Если нигде не забыли сделать vlax-release-object, то после этого надо обязательно сделать (gc). В итоге - во всём опять оказались виноваты мои кривые руки. ![]() ... да и Алексей получается оказался не прав в своем посте №13. ЗЫ Хотя это был простой случай. Всего 2 vlax-release-object. А уменя в лиспе открывается n-е кол-во xls-файлов (точнее один закрывается, другой открывается), и для каждого файла формируются указатели на книгу, лист, ячейки там всякие и т.п. (даже BuiltinDocumentProperties у каждого файла читается). И всё это надо отследить и в нужных местах расставить vlax-release-object. Жесть... ЗЗЫ И всё равно - иногда (gc) жутко тормозит. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Запустив несколько раз подряд (например, 10 раз) лисп, в памяти будет болтаться 10 экземпляров excel.exe, отнимая ресурсы. Или память бездонная?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Не всегда годится такой подход.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.05.2009
Сообщений: 3
|
(defun Exit_excel ()
(vlax-put-property (Excel-object) 'DisplayAlerts "False") ; Diasble notification (vlax-invoke-method (Active-workbook) 'Close) ; Close active workbook (vlax-invoke-method (Excel-object) 'Quit); Close Excel application (vlax-release-object (Excel-object)); Release Excel object ) |
|||
![]() |
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Попробовал.
Всё равно этот процесс-сволочь висит. В принципе я давно уже об этом не думаю. У меня процесс Excel'а только один висит в списке процессов (как ты и писал в посте №30). И меня это в общем-то не напрягает. Последний раз редактировалось Makswell, 01.10.2009 в 08:59. |
|||
![]() |