2017-08-08 1 views
-1

Ich habe Schleifen erstellt, um Diagrammbilder aus meinen Datagridviews zu erstellen. Ich habe jedes Bild individualy und dann verschmolzen ich sieDatei-Loop-Fehler löschen

Image img = new Bitmap(1024, 1200); 
      Graphics g = Graphics.FromImage(img); 

      g.DrawImage(Image.FromFile("chart" + i + ".png"), new System.Drawing.Point(0, 100)); 

      g.DrawImage(Image.FromFile("chart2" + i + ".png"), new System.Drawing.Point(0, 600)); 

      img.Save("finalchart-" + i + ".png"); 

Nun ich die einzelnen Charts und lassen Sie nur „finalchart“ löschen wollte. Also habe ich eine andere Schleife gemacht, um einzelne Diagramme zu löschen.

for (j = 1; j < columnCount; j++) 
     { 


      System.IO.File.Delete("chart" + j + ".png"); 
      System.IO.File.Delete("chart2" + j + ".png"); 
     } 

Aber wenn ich mein Programm starten bekomme ich diesen Fehler:

The process cannot access the file 'C:\Users\Frosty\Desktop\program\aproximator\program\program\bin\Debug\chart3.png' because it is being used by another process.

Irgendwelche Ideen? Danke

+3

Sie sollten 'Image' –

+1

entsorgen müssen Sie Ihre Objekte entsorgen. wickle deinen Code in '' mit (Image img = new Bitmap (1024, 1200)) {benutze (Grafik g = Graphics.FromImage (img)) {// deinen Code}} '' –

Antwort

0

Solange img eine Referenz hat, wird es auf diese anderen Griffe halten. Entsorgen Sie es einfach am Ende:

Image img = new Bitmap(1024, 1200); 
Graphics g = Graphics.FromImage(img); 
g.DrawImage(Image.FromFile("chart" + i + ".png"), new System.Drawing.Point(0, 100)); 
g.DrawImage(Image.FromFile("chart2" + i + ".png"), new System.Drawing.Point(0, 600)); 
img.Save("finalchart-" + i + ".png"); 
img.Dispose(); // like one commenter mentioned