Здравствуйте! Пишу небольшую программу для работы с изображениями. Столкнулся с проблемой. C# WinForms. listView. Загружаю в listView изображения с директории. При старте программы все изображения загружаются. Обновляю список изображений (метод просто заново перезапускается) все в порядки. Но в 3 раз выдает исключение System.OutOfMemoryException: "Выдано исключение типа "System.OutOfMemoryException"." что может быть?
код:
private void Load_Images() // Метод загрузки изображений в программу { listView1.Items.Clear();
Из документации, это исключение вызывается огромным количеством ошибок. В этом случае, скорее всего, слишком большое количество изображений, и поэтому не получается копировать массив, так как среда CLR не может выделить достаточное количество памяти.
Класс Image реализует интерфейс IDisposable, что кагбэ намекает нам, что картиночки надо бы уничтожать вручную. А в твоем коде я что-то ничего такого не заметил.
C# WinForms. listView.
Загружаю в listView изображения с директории. При старте программы все изображения загружаются. Обновляю список изображений (метод просто заново перезапускается) все в порядки. Но в 3 раз выдает исключение System.OutOfMemoryException: "Выдано исключение типа "System.OutOfMemoryException"." что может быть?
код:
private void Load_Images() // Метод загрузки изображений в программу
{
listView1.Items.Clear();
ImageList imageList = new ImageList();
imageList.ImageSize = new Size(100, 100);
string folderPath = @"C:\Users\AlexF\Documents\Electronic Arts\The Sims 4\Mods\Data\images";
foreach (string imagePath in Directory.GetFiles(folderPath))
{
try
{
using (FileStream stream = new FileStream(imagePath, FileMode.Open , FileAccess.Read ))
{
Image image = Image.FromStream(stream);
imageList.Images.Add(image);
}
}
catch (Exception)
{
MessageBox.Show("Ошибка загрузки изображений!");
}
}
listView1.LargeImageList = imageList;
listView1.View = View.LargeIcon;
for (int index = 0; index < imageList.Images.Count; index++)
{
ListViewItem item = new ListViewItem { ImageIndex = index };
listView1.Items.Add(item);
}
}