c#图像加载器内存泄漏

时间:2015-08-21 15:34:12

标签: c# image memory-leaks bitmapimage

我正在实现一个小型的图像浏览器,不幸的是我面临内存泄漏。 以下是我的装载程序。

 public BitmapSource getImage(string fileName, double width, double height)
    {
        FileStream s = File.Open(fileName, FileMode.Open);
        Image i = Image.FromStream(s, false, false);
        double iWidth = i.Width;
        double iHeight = i.Height;
        i.Dispose();
        s.Close();

        BitmapImage tmpImage = new BitmapImage();
        tmpImage.BeginInit();
        tmpImage.CacheOption = BitmapCacheOption.OnLoad;
        tmpImage.UriSource = new Uri(fileName);
        if (iWidth > iHeight)
        {
            tmpImage.DecodePixelWidth = (int)width;
        }
        else
        {
            tmpImage.DecodePixelHeight = (int)height;
        }
        tmpImage.EndInit();
        return tmpImage;
    }

这就是我调用装载程序的方式

private void whenArrowKeyPressed(int index)
{
   CurrentImage =  fh.getImage(fileList[index], 1920, 1080);
}

CurrentImage是一个属性,绑定到WPF ViewBox。

任何想法? 我也尝试从StreamSource读取,效果相同。

0 个答案:

没有答案