c# wpf ListView使用继承于Image的第三方控件作为缩略图数据的载体,并启动虚拟化加载图片的缩略图,但是还是有内存只增不减的情况,要怎么搞定?

baidu_36705249 2016-11-14 02:36:18
Listview使用虚拟化容器加载大量的缩略图,使用了两个第三方控件,开源的虚拟化容器VirtualizingTilePanel和继承于Image控件的ThrumbImage控件,第三方控件ThrumbImage是在CSDN下载频道上从他人项目中抠出来的,简介中说可以降低内存,异步加载图片,与图片资源隔离,加载完毕之后不会再试用图片资源。

我把这两个控件应用到我的项目的Listview控件中,VirtualizingTilePanel虚拟化容器配合ThrumbImage控件,实现滚动条的当前所在区域加载缩略图,非滚动条所在区域销毁缩略图(滚动条不在的区域,以前加载的缩略图会消失)。但是还有我最烦的内存只增不减的问题。每次加载新图片的缩略图时,以前加载的图片缩略图的内存还是不释放,只增不减,不知道怎么解决。由于使用的是两个第三方控件,我不好发代码,我还是直接发项目下载地址吧,项目不大。请求大神帮我解决一下内存只增不减的问题。

项目下载地址:http://pan.baidu.com/s/1jIjWvfo

如何在滚动条停止移动后先释放以前加载的图片的缩略图的内存,再去加载新图片的缩略图呢?或者还有其他办法?请求大神帮我解决一下内存只增不减的问题。
...全文
351 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_36705249 2016-11-29
  • 打赏
  • 举报
回复
引用 5 楼 clxcxx 的回复:
private BitmapImage SetImageSource(string path) { BitmapImage bitmap = new BitmapImage(); using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) { bitmap.BeginInit(); bitmap.StreamSource = fs; bitmap.CacheOption = BitmapCacheOption.OnDemand; bitmap.EndInit(); bitmap.Freeze(); } return bitmap.CloneCurrentValue(); }
你能发一下完整的吗,改成你这个SetImageSource方法,就会有一些地方提示错误。
格拉 2016-11-17
  • 打赏
  • 举报
回复
private BitmapImage SetImageSource(string path) { BitmapImage bitmap = new BitmapImage(); using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) { bitmap.BeginInit(); bitmap.StreamSource = fs; bitmap.CacheOption = BitmapCacheOption.OnDemand; bitmap.EndInit(); bitmap.Freeze(); } return bitmap.CloneCurrentValue(); }
Poopaye 2016-11-16
  • 打赏
  • 举报
回复
image不用了就及时调用dispose
baidu_36705249 2016-11-16
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
一般就是没及时调用Dispose
在哪个地方及时调用Dispose?
baidu_36705249 2016-11-16
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
image不用了就及时调用dispose
不太明白你的意思,你能详细说一下嘛,代码中的哪个叫image的对象要dispose?,除了类型是System.Windows.Controls.Image都调用dispose了,System.Windows.Controls.Image好像dispose不了吧?
Poopaye 2016-11-14
  • 打赏
  • 举报
回复
一般就是没及时调用Dispose

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧