2013-08-16 56 views
2

我寫了一個程序,代碼似乎工作,但它不工作。它給IO異常是未處理的錯誤。有些人說我,你應該刪除一些東西,因爲程序試圖同時使用同一個文件。請幫幫我!!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)); 

     } 
     } 
     } 

回答

4

這就是問題所在:

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

Image.FromFile會打開一個文件句柄,直到您處理的圖像不會關閉它。您正在嘗試移動文件而不使用處理首先打開該文件的圖像。

如果您在button1_Clickbutton2_Click方法處置的相關圖像,我懷疑(意識到,如果它顯示在PictureBox你需要從那裏先刪除它),你會發現它的作品。

編號: http://support.microsoft.com/?id=814675

+0

我不明白的話,請用代碼示例解釋。 –

+1

@AytaçMacit:你不明白哪一部分?您需要在'Image'上調用'Dispose',然後才能移動該'Image'正在讀取的文件。由於我們不知道應用程序的結構,因此很難給出清晰的示例。 –

+0

我現在明白了。感謝您對我的幫助。 –

相關問題