2013-10-24 3 views
1
Bitmap bmp = new Bitmap(files2.FullName); 

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

foreach (FileInfo files2 in files) 

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

Благодаря

Это мой код:

foreach (FileInfo files2 in files) 
{ 
    string nametime = files2.FullName.ToString(); 
    DateTime createdTime = File.GetCreationTime(nametime); 
    //Console.WriteLine(createdTime); 

    //test 
    if (createdTime.ToShortDateString() == DateTime.Today.ToShortDateString()) 
    { 
     try 
     { 
      if (files2.Extension == ".jpg" || files2.Extension == ".png" || files2.Extension == ".JPG" || files2.Extension == ".PNG" || files2.Extension == ".jpeg" || files2.Extension == ".JPEG") 
      { 
       Console.WriteLine("Name: " + files2.FullName); 
       Bitmap bmp = new Bitmap(files2.FullName); 

ответ

1

Так как это происходит только при обработке больших партий, это, вероятно, проблема памяти. Bitmap содержит неуправляемые ресурсы, поэтому вам нужно позвонить Dispose, когда вы закончите с ним. Лучший способ сделать это неявно через заявление using:

using (Bitmap bmp = new Bitmap(files2.FullName)) 
{ 
    // Process the bitmap here 
} 
+2

Большое спасибо за помощь Simon McKenzie. Это решило мою проблему. –

Смежные вопросы