【发布时间】:2015-07-01 18:43:37
【问题描述】:
我正在尝试开发一个应用来使用 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。
不显示照片,应用是稳定的。
我试过gdi32.dll的Bitmap和BitmapImage,GC.Collect和DeleteObject,问题是一样的。
有没有办法处置所有的资源?
对不起我的英语
【问题讨论】:
-
您多久创建一次这些图像?您是否正在积极处理它们?
-
不确定它是否会影响您的问题,但在
_img4部分的代码中您也输入了_img3.CacheOption = BitmapCacheOption.OnLoad; -
您是否正在处理任何位图?否则使用的内存量会增长
标签: c# wpf memory-leaks bitmapimage