Я разработал приложение для захвата и сохранения изображений в базе данных, но у меня проблема с использованием памяти.В моем доменном объекте у меня есть 3 свойства:
Изображение - байтовый массив, содержимое которого является jpg
RealImageThumb - байтовый массив, преобразованный в BitmapImage и сжатый, отображается пользователю в виде сетки сдругие миниатюры
RealImage - не имеет установщика, байтовый массив преобразуется в источник растрового изображения, это отображается во всплывающей подсказке, когда пользователь наводит на него курсор.
У меня возникает проблема, еслипользователь наводит курсор на каждое изображение, в свою очередь спирали использования памяти.Я понимаю, что когда пользователь наводит указатель мыши на источники растрового изображения и память не освобождается, я попытался присвоить RealImage свойство поддержки и присвоить ему значение null после, но снова память не освобождается (ожидание мусора).коллекционер?).
edit:
Это то, что ты имел в виду, Рэй?Я не получаю ничего, что показано во всплывающей подсказке, как показано ниже, но если я пытаюсь определить WeakReference<BitmapImage>
, я получаю System.WeakReference не имеет ошибки параметров типа.
private WeakReference _realImage;
public virtual BitmapImage RealImage
{
get
{
if (_realImage == null || _realImage.Target == null)
{
if (Image == null) return null;
var newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.CacheOption = BitmapCacheOption.None;
newBitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
newBitmapImage.StreamSource = new MemoryStream(Image);
newBitmapImage.EndInit();
_realImage = new WeakReference(newBitmapImage);
}
return (BitmapImage)_realImage.Target;
}
}