删除文件循环错误

时间:2017-08-08 13:59:52

标签: c# image delete-file

我创建了循环来从我的datagridviews创建图表图像。我个别地制作了每个图像,然后我将它们合并了

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

现在我想删除那些单独的图表,只留下" finalchart"。所以我又制作了一个删除单个图表的循环。

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


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

但是当我开始我的程序时,我收到了这个错误:

  

该进程无法访问该文件   &#39; C:\用户\雾\桌面\程序\ aproximator \程序\程序\ BIN \调试\ chart3.png&#39;   因为它正被另一个进程使用。

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

只要img有引用,它就会保留在这些其他句柄上。只需在最后处理它:

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