WPF图像内存泄漏

时间:2013-01-01 11:07:54

标签: .net wpf image memory-leaks controls

我正在处理一个处理大量图像文件的应用程序。我创建了一个窗口,其中包含一个包含我的图像的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;

我显然做了一些非常愚蠢的事情,任何人都可以告诉我它是什么?

0 个答案:

没有答案