2015-07-15 3 views
1

Я использую объект dotSpatials Map для выполнения некоторых операций над файлом формы. Моя программа поглощает память, когда я использую код ниже, чтобы добавить слой (MapLineLayer), и когда я закончил со слоем, мне нужна моя память. Я не могу избавиться от своего объекта Map и его слоев.dotSpatial MapLineLayer утечка памяти

 Map map = new Map {Projection = ProjectionInfo.FromEpsgCode(epsgCode)}; 
     try 
     { 
      map.AddLayer(filePath); 
     } 

Как правильно расположить карту dotSpatials?

ответ

0

Попробуйте ClearLayers(). Если объект Map не отключен и по-прежнему вызывает утечку памяти, это может быть ошибкой ... Сказав это, имейте в виду, что сборщик мусора не освободит вашу память сразу, а элемент управления Map выходит за рамки.

Если вы хотите, вы можете выполнить GC.Collect сразу после того, как вы закончите с контролем карты (для целей тестирования), но не надо ставить этот код в приложении, как сборщик мусора управляет его должным образом.

GC.Collect(); 
GC.WaitForPendingFinalizers(); 
+0

Я пробовал ваше предложение и, к сожалению, оно не работает. – haber

+0

@haber: Что ты сделал? Как вы измеряли память? Вы выполняли свой код несколько раз и вызывают GC, как я указал? – CharithJ

+0

Я не использовал GC.WaitForPendingFinalizers(); до. Добавление его сделало память свободной. – haber

Смежные вопросы