2011-08-17 482 views
9

這似乎是一個相當簡單的問題,但我似乎無法找到解決方法。C# - WPF如何重新引用BitmapImage,以便我可以刪除源文件?

在WPF窗口中,我有一個圖像image_small_pic。在相關的C#文件,我設置使用此代碼的價值:

Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute); 
small_image_bmp = new BitmapImage(src); 
image_small_pic.Source = small_image_bmp; 

凡small_image_bmp是一個公共的BitmapImage對象。但是,如果那麼,如果稍後,如果我將small_image_bmp更改爲另一個文件並重新分配image_small_pic.Source,那麼原始圖像仍然被鎖定,我無法刪除它。即使我稍後嘗試,它仍然處於鎖定狀態。任何想法我可以釋放這個嗎?

回答

12

結賬this article。 WPF圖像有一些奇怪的行爲,你會遇到。解決方法是自己讀取字節,然後根據它們創建一個映像,因爲如果讓框架處理它,文件將保持鎖定狀態。

+0

嗯有趣,我會試一試,看看它是否有效 – cost

+0

看起來像是修好了,謝謝!多麼奇怪的解決方案,但肯定是一個有效的方法。 – cost

2
Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute); 
var small_image_bmp = new BitmapImage(); 
small_image_bmp.BeginInit(); 
small_image_bmp.CacheOption = BitmapCacheOption.OnLoad; 
small_image_bmp.UriSource = src; 
small_image_bmp.EndInit(); 

image_small_pic.Source = small_image_bmp; 
相關問題