首先,我在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/

10-12 16:10