Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# BitmapImage内存不足_C#_Wpf_Memory Leaks_Bitmapimage - Fatal编程技术网

C# BitmapImage内存不足

C# BitmapImage内存不足,c#,wpf,memory-leaks,bitmapimage,C#,Wpf,Memory Leaks,Bitmapimage,我正在尝试开发一个应用程序,用Visual Studio 2013拍摄和打印照片 该应用程序分为2个项目: 首先是客户端,它拍摄4张照片并发送其路径文件 第二个是服务器。当有连接时,他会显示4张照片。 然后,用户可以选择一个框架,数量和打印他的照片 装载有问题: BitmapImage _img1 = new BitmapImage(); _img1.BeginInit(); _img1.CacheOption = Bitm

我正在尝试开发一个应用程序,用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

如果不显示照片,应用程序是稳定的

我试过使用位图和BitmapImage,gdi32.dll的GC.Collect和DeleteObject,问题是一样的

有没有办法处置所有资源


对不起,我的英语不好

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

您多久创建一次这些图像?您是否积极地处理它们?不确定它是否会影响您的问题,但在您键入的_img3.CacheOption=BitmapCacheOption.OnLoad的_img4部分的代码中;还有,你在处理位图吗?否则,使用的内存量将增加