使用BitmapImage进行内存不足

时间:2015-04-23 14:03:35

标签: c# wpf memory-leaks bitmapimage

我正在尝试使用Visual Studio 2013开发应用程序以拍摄和打印照片。

该应用程序分为2个项目:

  • 首先是客户端,它需要4张照片并发送他们的路径文件。

  • 第二个是服务器。当有连接时,他会显示4张照片。 然后用户可以选择一个框架,一个数量并打印他的照片。

加载存在问题:

            BitmapImage _img1 = new BitmapImage();
            _img1.BeginInit();
            _img1.CacheOption = BitmapCacheOption.OnLoad;
            _img1.UriSource = new Uri(_images[0]);
            _img1.EndInit();
            img1.Source = _img1;

            BitmapImage _img2 = new BitmapImage();
            _img2.BeginInit();
            _img2.CacheOption = BitmapCacheOption.OnLoad;
            _img2.UriSource = new Uri(_images[1]);
            _img2.EndInit();
            img2.Source = _img2;

            BitmapImage _img3 = new BitmapImage();
            _img3.BeginInit();
            _img3.CacheOption = BitmapCacheOption.OnLoad;
            _img3.UriSource = new Uri(_images[2]);
            _img3.EndInit();
            img3.Source = _img3;

            BitmapImage _img4 = new BitmapImage();
            _img4.BeginInit();
            _img3.CacheOption = BitmapCacheOption.OnLoad;
            _img4.UriSource = new Uri(_images[3]);
            _img4.EndInit();
            img4.Source = _img4;

我尝试使用" BitmapCacheOption.OnDemand"。程序启动时,内存消耗为3Go。几分钟后,它增加到6Go。

当抛出outofmemoryexception时,它会出现在PresentationCore.dll

我已经看过消费了,并且在节目的每个循环中,消费增加了0,4Go。

没有显示照片,应用程序稳定。

我尝试使用Bitmap和BitmapImage,GC.Collect和gdi32.dll的DeleteObject,问题是一样的。

有没有办法处理所有资源?

抱歉我的英文

1 个答案:

答案 0 :(得分:0)

您正在缓存内存中的整个位图 - BitmapCacheOption.OnLoad。尝试使用None或OnDemand而不是OnLoad。