ПрограммированиеФорумОбщее

C# проблема с Out of Memory

#0
11:47, 27 апр 2011

Здравствуйте, такая проблемма
вот код

foreach(string file in files)
{
    using(Image img = Image.FromFile(file)) // <--- вот тут вот вылетает исключение Out of Memory
    {
        Area = img.Width * img.height;
    } 
}

файлов много но они мелкие, но во время вылета исключения приложение занимает в памяти 30мб
в чем может быть дело?

#1
12:37, 27 апр 2011

Я не слишком большой знаток C# но помнится одно время в шарпе была проблема с foreach она ОЧЕНЬ плохо работала с памятью

#2
12:56, 27 апр 2011

Вероятно память не до конца очищяеться, и отсюда проблемы с Out of Memory. Попробуйте вручную вызывать GC.Collect

#3
13:13, 27 апр 2011

smbdie
> в чем может быть дело?
Может, один из файлов вовсе не картинка, и падает потому, что Image пытается выделить кусок памяти, исходя из мусорных аргументов (отрицательние или огромные размеры).

#4
16:02, 27 апр 2011

Я думаю RPGman прав, посмотри где и как у тебя определяется структура files, возможно там ошибка и одна из строк file передается неправильно.

#5
16:18, 27 апр 2011

RPGman
+1
Это может быть какой-нибудь скрытый Thumbs.db.

#6
18:07, 27 апр 2011
foreach(string file in files)
{
    try
    {
        using(Image img = Image.FromFile(file)) // <--- вот тут вот вылетает исключение Out of Memory
        {
            Area = img.Width * img.height;
        } 
    }
    catch(Exception e)
    {
        Console.WriteLine("Error on file {0} - {1}",file,e);
        // или Log.Write(...)
        // или ShowMessageBox(...)
        // или брейк
    }
}

и зафик гадать на кофейной гуще?

#7
18:10, 27 апр 2011

MSDN:  http://msdn.microsoft.com/en-us/library/stf701f5.aspx
>Image.FromFile Method (String)
>OutOfMemoryException:
>The file does not have a valid image format.
>-or-
>GDI+ does not support the pixel format of the file.
т.е. это тупо не поддерживаемая картинка, если картинка вообще

#8
21:28, 27 апр 2011

rAmpArk
Спасибо, да просто битая картинка.

Спасибо всем, просто странно что OutOfMemory, я думал может я как то не освобождаю хендл загружаемого файла или еще что...
а тут всё банально )

туплю одним словом.

#9
21:31, 27 апр 2011

rAmpArk
> >OutOfMemoryException:
> > he file does not have a valid image format.
> >-or-
> > DI+ does not support the pixel format of the file.

Отличная же диагностика!

ПрограммированиеФорумОбщее

Тема в архиве.