如何快速彻底清空 CImageList,释放所占资源

k_uncle 2014-07-09 08:07:55
用CImageList和CListCtrl来显示缩略图
现在遇到一个问题
每次加载缩略图之前都要释放之前的缩略图所占资源,如下

int iImageCount = pImgList->GetImageCount();
for( int i=0; i < iImageCount; i++ )
{
pImgList->Remove(0);
}


如果只是几十个或几百个缩略图,这个过程会比较快,但是如果是几千个甚至是几万个缩略图呢,这个释放的过程就会很慢,好几秒甚至十几几十秒都有可能,这样就会造成显示界面空白卡死的现象,有没有什么办法可以使这个释放的过程快速完成而不影响到界面的卡顿呢?
如果不进行这段释放的代码,缩略图来回切换加载是没有卡顿的现象,那是不是会造成加载略缩图所占的内存资源不断累加?

如果只能用pImgList->Remove(0);来释放资源的话,我想到一个方法,声明一个数组 pImgList[n],第一次加载缩略图时调用pImgList[0],当切换到加载另一组缩略图时用pImgList[1]进行处理,同时用线程将pImgList[0]释放掉,再切换到另一组缩略图时调用pImgList[2],同样将先前调用过的pImgList[1]用线程释放掉。这里有一个问题是当返回来要调用pImgList[0]时如何判断其资源已经释放完成了,用 pImgList[0]->GetImageCount() =0 是不是可以说明pImgList[0]已经释放完成了?
...全文
461 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lowerbyte 2014-07-26
  • 打赏
  • 举报
回复
先把容器清空再Remove
lx624909677 2014-07-10
  • 打赏
  • 举报
回复
m_imageList.Remove(-1); 删除全部 还有,不用remove直接DeleteImageList

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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