wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃,示例代码如下:
public static BitmapImage GetImage(string imagePath)
{ BitmapImage bitmap = new BitmapImage(); if (File.Exists(imagePath)) { bitmap.BeginInit(); bitmap.CacheOption = BitmapCacheOption.OnLoad; using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath))) { bitmap.StreamSource = ms; bitmap.EndInit(); bitmap.Freeze(); // 在这里释放资源 } } return bitmap;
}
使用这个方法:
image1.Source = GetImage(path); // path为图片路径
请注意,BitmapImage的Freeze方法会将资源从垃圾收集器中释放,因此不会对应用程序的内存使用造成负担。不过请注意,在使用Image控件的时候,最好能及时释放资源,避免造成内存泄露。