Тема: Не могу освободить память от созданного объекта.
Win7, TCS 6.3 (19103)
Макрос, в цикле создаёт 4 разных объекта , после выполнения
определённых действий удаляет их. Он выполняется для всех
выделенных записей, количество которых превышает 500.
Запускаю макрос, доходит до 443-ей записи и вываливается с
сообщением (файл s1.tif). Смотрим диспетчер задач. До запуска
макроса TCS_Аll занимал 82 100 Кб, а после отвала 131 132 КБ.
Теперь, после отвала, любое действие с TCS_Аll приводит к
появлению сообщения о превышении используемых ресурсов.
Приходится убивать TCS_Аll диспетчером.
Для проверки метода освобождения памяти написал тестовый
скрипт.
Sub FormMacro_Test(TCSActiveModule) LogObject.ScriptTimeOut = 0 For i = 1 to 100 Set TP = TCSActiveModule.Properties("NmkTechnology").AsIDispatch 'Перейдём на техпроцесс pbStr = CSDN_DESEAN_Library.ShowProgressBarNote(pbStr, "Ждите ... обрабатывается "+cStr( i ) +"-я запись." +_ TP.Properties("NMK_NAME").DisplayText) Call TCSApp.DeleteModuleByUserModuleName("Nmks_UniqueName") '_1 TP.UserModuleName = "Nmks_UniqueName" '_2 Call TCSApp.DeleteModuleByUserModuleName("Nmks_UniqueName") '_3 Set TP = Nothing Next Call TCSApp.ShowMessageBox("", "END") Call TCSApp.HideProgressMessage Exit Sub
Смотрим диспетчер. Запускаю тест. До запуска 77 908 Кб,
после окончания 80 848 Кб. Т.е. сожрал 10 940 Кб и этот кусок
памяти остаётся занятым пока TCS_Аll находится в памяти.
Как правильно освобождать память от создаваемых объектов?