У меня возникли проблемы с использованием ImageList для моего ListView в приложении .net. В моей реализации этот ImageList может содержать несколько тысяч изображений в зависимости от использования. Проблема возникла, когда я пытался работать с большим количеством изображений. Когда я получал изображения 5K +, я столкнулся с общим понятием «Изображение не может быть добавлено в исключение ImageList», пытаясь добавить изображение. Точное число, в котором произошел этот сбой, немного подскочило.Ошибка в ImageList в реализации .NET ImageList?
Итак, пытаясь решить эту проблему, я попытался расширить емкость ImageList, используя собственную функцию ImageList_SetImageCount. Это было прекрасно и решило мою непосредственную проблему. Мне пришлось заполнить список, используя образ ImageList [index] = вместо метода .Add(). Все было в порядке, но когда пришло время вытащить изображение, проблемы заполнились. Теперь, когда я ссылаюсь на изображение в этом ImageList по индексу, я получаю исключение из памяти. Растровое изображение x = ImageList [любой индекс] сработает.
Я пробовал преследовать это много разных способов, и я все еще сталкиваюсь с проблемами с ImageList.
В моей последней попытке изучить проблему дальше, я собрал следующий фрагмент тестового кода, который по-прежнему ведет себя странно!
private void Form1_Load(object sender, EventArgs e)
{
list = new ImageList();
list.ImageSize = new Size(128, 128);
list.ColorDepth = ColorDepth.Depth32Bit;
Image[] images = new Image[10];
for (int y = 0; y < 10; y++)
{
images[y] = new Bitmap(@"Path to loading_photo.png");
}
for (int x = 0; x < 750; x++)
{
list.Images.AddRange(images);
}
list.Images[12] = new Bitmap(@"Path to another.png");
Ошибка последней строки с ошибкой «Изображение не может быть добавлено к ошибке ImageList». Как ни странно, установка второго цикла для более низкой итерации (т. Е. 200 для суммирования всего 2000 изображений) ведет себя очень хорошо.
Есть ли определенный порог в ImageList в .net Я не знаю? Любая помощь будет принята с благодарностью.
У меня нет опыта в этой области, но не кажется «странным», что добавление меньшего количества изображений заставляет все работать. Вы почти наверняка сталкиваетесь с проблемой памяти, поэтому использование меньше памяти было бы хорошим способом избежать этого. Вы можете просмотреть свое приложение, чтобы узнать, что такое использование вашей памяти. – dlev
Я тоже об этом думал, но у меня есть концерты. Кроме того, установка этого изображения в представление списка, отображает все изображения в порядке. Это просто, когда я пытаюсь получить доступ к изображению по его индексу, чтобы отобразить его в другом месте, где возникают проблемы с памятью. Просто странно. – genus