wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃

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控件的时候,最好能及时释放资源,避免造成内存泄露。

 

你可能感兴趣的:(WPF,C#,wpf,c#)