2

我正在处理一个处理大量图像文件的应用程序。我创建了一个窗口,其中包含一个包含我的图像的包装面板。该窗口获取图像列表(文件的路径)并创建一个新的图像控件,然后将其添加到包装面板中。当我打开窗口时,我看到内存使用量上升,但是当我关闭窗口时,内存使用量并没有下降。这是我尝试将文件加载到我的图像控件中的内容:

使用文件流:

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;

我显然在做一些非常愚蠢的事情,有人能告诉我它是什么吗?

4

0 回答 0