2013-03-19 15 views
5

ich ähnliche Probleme gegoogelt haben könnte, aber nicht genau herauszufinden, wie mein CodeEine nicht behandelte Ausnahme des Typs ‚System.OutOfMemoryException‘ aufgetreten in System.Drawing.dll Zusätzliche Informationen: Nicht genügend Arbeitsspeicher

zu ändern habe ich eine Liste "Bilder", die etwa 20 Fotos von jeweils 1 MB enthält. Ich möchte die Bilder in der Liste durchblättern, indem ich auf die nächste Schaltfläche klicke. Aber nach etwa 8 Bilder Ich steige aus der Erinnerung

private void button4_Click(object sender, EventArgs e) //next 
    { 
     index++; 
     if (index >= images.Count) index = 0; 
     CurrImage = images[index]; 
     Bitmap b = new Bitmap((Bitmap)CurrImage.Clone()); //breakpoint occurs her 
     pictureBox1.Image = b; 

     NewThread = new Thread(new ThreadStart(ChooseColors2)); 
    } 

ChooseColors2 thread „CurrImage“ verwenden, so Rennbedingungen zu vermeiden, vermied ich es, dass durch eine neue Bitmap zu schaffen, wie oben

gezeigt Bitte beachten Sie, dass, wenn ich benutze imageBox1.Image = CurrImage; Ohne eine neue Bitmap zu erstellen, erhalte ich diesen Fehler nicht, aber es wird eine Racebedingung-Ausnahme mit dem Thread geben. Dank

Antwort

4

Sie könnten versuchen, den folgenden Aufruf, bevor eine neue Bitmap zu pictureBox1.Image Zuordnung der bisherigen „neuen“ Bitmap und Ressourcen frei zu entfernen:

pictureBox1.Image.Dispose(); 
+3

Dank Grant, ich glaube, ich brauche mehr über Speicher lesen Leck. Wann immer ich denke, dass ich ein Programmierer geworden bin, merke ich dann, dass ich noch Meilen entfernt bin. Danke trotzdem für deine Hilfe. – Basco

Verwandte Themen