System.IO.IOException: ‘由於另一個處理序正在使用檔案 ‘C:....’,所以無法存取該檔案。

1
2
3
4
5
6
7
8
9
10
11
12
//原先我用一個
path = @"C:\..\.."

System.Windows.Controls.Image image = new System.Windows.Controls.Image();
image.Source = path

//後面我要刪除這個檔案時
File.Delete(path)

#region 錯誤訊息
System.IO.IOException: '由於另一個處理序正在使用檔案 'C:\..\..',所以無法存取該檔案。
#endregion

Solve

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
path = @"C:\..\.."

System.Windows.Controls.Image image = new System.Windows.Controls.Image();
System.Drawing.Image img = System.Drawing.Image.FromFile(ImagePath);
image.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
((Bitmap)img).GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());

img.Dispose();

// 順帶用try catch
try
{
File.Delete(fullPath);
}
catch
{

MessageBox.Show("檔案正在使用中,無法刪除。", "刪除失敗", MessageBoxButton.OK, MessageBoxImage.Error);
}

這樣程序就不會綁定這圖片