原文地址:http://www.cnblogs.com/enjoyprogram/p/4344799.html
異常提示: “文件正由另一進程使用,該進程無法訪問該文件”。 打開一個文件後,嘗試重新打開一次該文件,或者打開該文件後想對該文件進行其他操作的時候,就容易出現這個錯誤提示。 通常造成該錯誤的原因是構造System.IO.FileStream時參數設置有問題。 一般習慣直接使用: FileStream fs = new FileStream(fileName, FileMode.Open) 這個方法打開文件的時候是以只讀共享的方式打開的,但若此文件已被一個擁有寫權限的進程打開的話,就無法讀取了, 因此需要使用 FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 設置文件共享方式為讀寫:FileShare.ReadWrite,這樣的話問題就解決了。
將圖片文件加載到Picturebox中後若要刪除或覆蓋該圖片文件也會出現上面異常提示
pictureBox1.Image = Image.FromFile(sFile);//用此種方式加載圖片,關閉頁面後該路徑的文件可能會仍被線程占用,導致無法刪除、覆蓋
pictureBox1.ImageLocation = sFile;及下面方式
FileStream fs = new FileStream(sFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
MemoryStream ms = new MemoryStream(bytes);
Bitmap img = new Bitmap(ms);
pictureBox1.Image = img;
則不會再繼續占用該文件。