我正在处理一个处理大量图像文件的应用程序。我创建了一个窗口,其中包含一个包含我的图像的包装面板。该窗口获取图像列表(文件的路径)并创建一个新的图像控件,然后将其添加到包装面板中。当我打开窗口时,我看到内存使用量上升,但是当我关闭窗口时,内存使用量并没有下降。这是我尝试将文件加载到我的图像控件中的内容:
使用文件流:
BitmapImage test = new BitmapImage();
using (FileStream stream = new FileStream(strThumbPath, FileMode.Open, FileAccess.Read))
{
test.BeginInit();
test.StreamSource = stream;
test.CacheOption = BitmapCacheOption.OnLoad;
test.EndInit();
}
test.Freeze();
Image.Source = test;
使用 UriSource 加载
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(strThumbPath);
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
bitmap.Freeze();
Image.Source = bitmap;
使用内存流:
BitmapImage src = new BitmapImage();
MemoryStream ms = new MemoryStream();
using (FileStream stream = new FileStream(strThumbPath, FileMode.Open, FileAccess.Read))
{
ms.SetLength(stream.Length);
stream.Read(ms.GetBuffer(), 0, (int)stream.Length);
ms.Flush();
stream.Close();
src.BeginInit();
src.StreamSource = ms;
src.EndInit();
src.Freeze();
ms.Close();
}
Image.Source = src;
我显然在做一些非常愚蠢的事情,有人能告诉我它是什么吗?