#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);