IO异常未得到处理.进程无法访问该文件,因为它正在被使用

本文关键字:因为 文件 访问 异常 处理 进程 IO | 更新日期: 2023-09-27 18:27:49

我写了一个程序,代码似乎可以工作,但它不工作。它给出IO异常是未处理的错误。有些人说,你们应该删除一些东西,因为程序试图在同一时间使用相同的文件。请帮帮我!!

      namespace App1508
     {
       public partial class Form2 : Form
      { 
      string goodDir = "C:''GOOD''";
      string badDir = "C:''BAD''";
      string fromDir = "C:''DENEME''";
      List<Image> images = null;
      int index = -1;
      FileInfo[] finfos = null;
       public Form2()
      {
          InitializeComponent();
          DirectoryInfo di = new DirectoryInfo(@"C:'DENEME");
          finfos = di.GetFiles("*.jpg",SearchOption.TopDirectoryOnly);
          images = new List<Image>();
          foreach (FileInfo fi in finfos)
         {
             images.Add(Image.FromFile(fi.FullName));
         }
       }
        private void button1_Click(object sender, EventArgs e)
       {
         finfos[index].MoveTo(Path.Combine("C:''GOOD", finfos[index].Name));
       }
         private void pictureBox1_Click(object sender, EventArgs e)
       {
        index++;
        if (index < 0 || index >= images.Count)
        index = 0;
        pictureBox1.Image = images[index];
        }
         private void button2_Click(object sender, EventArgs e)
        {
           finfos[index].MoveTo(Path.Combine("C:''BAD", finfos[index].Name));
         }
        }
       }

IO异常未得到处理.进程无法访问该文件,因为它正在被使用

这就是问题所在:

foreach (FileInfo fi in finfos)
{
    images.Add(Image.FromFile(fi.FullName));
}

Image.FromFile将打开一个文件句柄,在处理完图像之前不会关闭它。您试图移动文件,而不处理先打开该文件的图像。

我怀疑,如果您在button1_Clickbutton2_Click方法中处理相关图像(请注意,如果它显示在PictureBox中,您需要首先将其删除),您会发现它是有效的。

参考编号:http://support.microsoft.com/?id=814675

相关文章: