Я работаю с ArcGis Runtime SDK для .Net v10.2.5.
У меня есть сокет UDP, прослушивающий и ожидающий данных изображения, которые запускают функцию, выполняемую в другом потоке в фоновом режиме.
Я хочу нарисовать изображение на эллипсе произвольного радиуса, поэтому я использую
var filestream = System.IO.File.Open(imagepath, FileMode.Open, FileAccess.Read);
MapPoint point = new MapPoint(center.longitude, center.latitude, SpatialReferences.Wgs84);
var polySymbol = new Esri.ArcGISRuntime.Symbology.PictureFillSymbol();
await polySymbol.SetSourceAsync(filestream);
var param = new GeodesicEllipseParameters(point, 25, LinearUnits.Meters);
var ellipse = GeometryEngine.GeodesicEllipse(param);
***//HERE IS THE PROBLEM***
_graphicsLayer.Graphics.Clear();
_graphicsLayer.Graphics.Add(new Graphic { Geometry = ellipse, Symbol = polySymbol });
Это делается ~ 5 раз в секунду. Несмотря на то, что я очищаю слой на каждой итерации, существует утечка памяти, которая увеличивает использование памяти до сбоя приложения.
Я читал о проблемах с памятью, используя ArcGIS и процесс Geometry, поэтому я не уверен, что я упираюсь в стену или просто делаю что-то плохо.
Я также попытался перезаписать геометрию без очистки:
//this is the problematic line, if i comment that, memory doesn't increase.
_graphicsLayer.Graphics[0].Symbol = polySymbol;
_graphicsLayer.Graphics[0].Geometry = ellipse;
И используя оператор stream, файловый поток правильно закрывается в конце, но используемая оперативная память продолжает увеличиваться до тех пор, пока приложение не выйдет из строя.