RUS  ENG 

Map или MapCtrl в ActiveX плагине корректное освобождение ресурсов

Страницы: 1
RSS
Map или MapCtrl в ActiveX плагине корректное освобождение ресурсов
 
Добрый день.
В ActiveX плагине открываю карту через диалог ZuluCommDlg, при закрытии плагина или самого ZuluGIS, Zulu.exe висит в памяти, не выгружается.
Выгрузить пытался в DisconnectZuluPlugin.
Если использую MapCtrl, реакции вообще никакой, ни на Free, ни на Destroy.
Если IMapDoc (Map := CoMapDoc.Create; Map.Open....) при выходе Zulu падает как придется, то сразу, то через некоторое время после закрытия.
У IMapDoc для закрытия только один подходящий метод - Map._Release.

Подскажите как корректно выгрузить плагин, карту, чтоб сам Zulu.exe нормально закрылся.

ZuluGIS 8.0.0.6912u , Delphi XE6.

Спасибо.
Изменено: Vic - 27.12.2018 15:24:07
 
Vic, добрый день!
Процесс zulu.exe может оставаться в памяти, если плагин "держит" какой-нибудь объект оболочки, напр. Zulu, ActiveDocument
Если объект - объект ядра и создан через COM (типа Map := CoMapDoc.Create), то он не влияет на счётчик блокировок главного модуля.
Надо проконтролировать на предмет сохранённых объектов из библиотеки Zulu_TLB (Zulu 8.0 Application)
 
Решилось примерно так:
карту открываю не из плагина, а беру текущую открытую из ZuluGIS:

Zulu := FConnector.Zulu;
Map := Zulu.ActiveMapDoc; // берем текущую карту
Layer := Map.Layers.Active; // берем активный слой

все что нужно делаем с картой и слоем, и в DisconnectZuluPlugin

Layer := nil;
Map := nil;

теперь плагин корректно закрывается и ZuluGIS при выходе нормально выгружается из памяти.
Страницы: 1