我正在处理一个处理大量图像文件的应用程序。我创建了一个窗口,其中包含一个包含我的图像的wrappanel。该窗口采用图像列表(文件的路径)并创建一个新的图像控件,然后将其添加到wrappanel。当我打开窗口时,我看到内存使用率上升,但是当我关闭窗口时,内存使用量不会下降。以下是我尝试将文件加载到图像控件中的内容:
使用文件流:
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;
我显然做了一些非常愚蠢的事情,任何人都可以告诉我它是什么?