Моя проблема в том, что даже после закрытия формы и обработки всех ссылок на изображения, которые были загружены следующим образом:
Код: Выделить всё
ThingFile? imageFile = await ThingData.LoadFileAsync(Images[Index].ID);
ArgumentNullException.ThrowIfNull(imageFile);
try
{
if (ThingData.VerifyFile(imageFile) && imageFile.Content != null)
{
var imageData = imageFile.Content;
imageFile.Clear();
using var img = new MagickImage(imageData);
if (img.ColorSpace != ColorSpace.sRGB)
{
img.TransformColorSpace(ColorProfile.SRGB);
}
using var ms = new MemoryStream();
img.Write(ms, MagickFormat.Png32);
ms.Position = 0;
using var tempBitmap = new Bitmap(ms);
pictureBox.Image = (Bitmap)tempBitmap.Clone();
imageData = null;
}
else
{
ArgumentNullException.ThrowIfNull(pictureBox.ErrorImage);
pictureBox.Image = (Image)pictureBox.ErrorImage.Clone();
}
}
finally
{
imageFile = null;
}
Например, после анализа использования памяти с помощью dotMemory было использовано 60 МБ, ImageViewer привык и закрылся, и (даже после вызова GarbageCollector с помощью GC.Collect(); ) объем ОЗУ увеличился до 100 МБ. 40 МБ были не просто не освобождены, а потеряны, так как повторение того же самого привело бы к тому, что объем ОЗУ составил бы 140, затем 180 и так далее...
Подробнее здесь: https://stackoverflow.com/questions/797 ... ehind-them
Мобильная версия