首先,我在BitmapImage
控件上加载一个Image
。
其次,我使用Window
控件,然后关闭Image
。
我在一分钟内做了2-3次,我的记忆很快就会填满,因为当窗口关闭时,图像不会被卸载回来。
那么如何从Window
手动卸载BitmapImage
以释放内存?
最佳答案
我相信您正在寻找的解决方案是在http://www.ridgesolutions.ie/index.php/2012/02/03/net-wpf-bitmapimage-file-locking/上。在我的例子中,我试图找到一种方法在文件创建后删除它,但它似乎是两个问题的解决方案。
无法释放内存:
var bitmap = new BitmapImage(new Uri(imageFilePath));
释放内存,并允许删除文件:
var bitmap = new BitmapImage();
var stream = File.OpenRead(imageFilePath);
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
stream.Close();
stream.Dispose();
也可以冻结位图图像:
bitmap.Freeze();
关于wpf - 不再需要BitmapImage后如何释放内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8352787/