2017-08-08 1 views
-1

J'ai créé des boucles pour créer des images de graphique à partir de mes vues de données. J'ai fait chaque image individualy puis je les ai fusionnédelete file loop error

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"); 

Maintenant, je voulais supprimer ces tableaux individuels et ne laisser que « finalchart ». J'ai donc fait une autre boucle pour supprimer des graphiques individuels.

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


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

Mais quand je commence mon programme que je reçois cette erreur:

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.

Toutes les idées? Merci

+3

Vous devez disposer 'Image' –

+1

vous devez disposer de vos objets. Enveloppez votre code dans '' using (Image img = new Bitmap (1024, 1200)) {en utilisant (Graphics g = Graphics.FromImage (img)) {// votre code}} '' –

Répondre

0

Tant que img a une référence, il tiendra sur ces autres poignées. Il suffit de s'en débarrasser à la fin:

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