WPF致命泄露bug!有没有!
相信用过WPF的BitmapImage的,都在用类似这样的代码来解决文件无法删除的问题!
[size=9px]
static class AppHelper
{
public static BitmapImage GetBitmapImage(string path)
{
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = new MemoryStream(File.ReadAllBytes(path));
bitmap.EndInit();
bitmap.Freeze();
return bitmap;
}
}[/size]
但是就算这样也只是解决了文件独占的泄露问题,开你的任务管理器看看吧
内存只占用不释放
for(int i = 0; i < 20; i++)
{
AppHelper.GetBitmapImage("Images/img003.bmp");
}
上面代码里面的bmp有4MB大,循环过后没有持有图像的引用,但是内存占用不断增大,根本无法下降
然后想跟我说Dispose、Using、Close的童鞋们好好看清楚BitmapImage这个类根本就没有IDispose接口,也没有提供Close方法
想不到WPF最基础的图像类有内存泄露bug吧!