Как удалить изображение.Источник из памяти

#c# #wpf

#c# #wpf

Вопрос:

У меня проблема, когда я добавляю изображения в панель-оболочку, она отказывается загружаться, если в памяти слишком много изображений.

Фактически, когда я создаю элемент управления изображением, а его источник поступает с URL-адреса (с которого он должен загрузить изображение), удаляю элемент управления изображением и воссоздаю его с тем же источником, изображение появляется напрямую, но нет времени загружать изображение, как при первом создании элемента управления.

Как я могу удалить изображение из памяти?

Вот мой код:

 Image image = new Image();
image.Width = 60;
image.Height = 60;

image.ToolTip = StringExtension.GetTextBetweenTwoWord(Utilities.resource.EmojiesLink[i], "/72/apple/271/", "_").Replace('-', ' '); // name of mood

image.Stretch = Stretch.Fill;

image.Source = new BitmapImage(new Uri(Utilities.resource.EmojiesLink[i]));

image.MouseDown  = new MouseButtonEventHandler(ExtraMoodFromWebsiteMouseDown);

wrapPanel_moodFromInternet.Children.Add(image);
 

PS: это в WPF

Ответ №1:

Вы можете освободить объект из памяти, вызвав метод dispose . https://docs.microsoft.com/en-us/dotnet/api/system.drawing.image.dispose?view=dotnet-plat-ext-5.0

             Image image = new Image();
            image.Width = 60;
            image.Height = 60;

            image.ToolTip = StringExtension.GetTextBetweenTwoWord(Utilities.resource.EmojiesLink[i], "/72/apple/271/", "_").Replace('-', ' '); // name of mood

            image.Stretch = Stretch.Fill;

            image.Source = new BitmapImage(new Uri(Utilities.resource.EmojiesLink[i]));

            image.MouseDown  = new MouseButtonEventHandler(ExtraMoodFromWebsiteMouseDown);

            wrapPanel_moodFromInternet.Children.Add(image);

            image.Dispose(true);