我正在尝试使用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,问题是一样的。
有没有办法处理所有资源?
抱歉我的英文
答案 0 :(得分:0)
您正在缓存内存中的整个位图 - BitmapCacheOption.OnLoad。尝试使用None或OnDemand而不是OnLoad。