C# 如何才能释放掉这个资源

wxmtgg 2017-10-28 03:15:00
public static Image GetImage(string ImagePath)
{
//路径是文件
if (System.IO.File.Exists(ImagePath))
{
//获取高清大图标
IntPtr hIcon = IconHelp.GetJumboIcon(IconHelp.GetIconIndex(ImagePath));
System.Drawing.Icon fileIcon = (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
return Image.FromHbitmap(fileIcon.ToBitmap().GetHbitmap());

//if (Path.GetExtension(ImagePath) == ".exe" ||
//Path.GetExtension(ImagePath) == ".ico" ||
//Path.GetExtension(ImagePath) == ".rar" ||
//Path.GetExtension(ImagePath) == ".zip")
//{
// 这几种图标不好显示处理方法
// System.Drawing.Icon fileIcon = linchao.GetFileIcon(ImagePath);
// return Image.FromHbitmap(fileIcon.ToBitmap().GetHbitmap());
//}
//else
//{
// 获取高清大图标
// IntPtr hIcon = IconHelp.GetJumboIcon(IconHelp.GetIconIndex(ImagePath));
// System.Drawing.Icon fileIcon = (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
// return Image.FromHbitmap(fileIcon.ToBitmap().GetHbitmap());
//}


}



//Console.WriteLine("文件夹");
Icon fileIconb = linchao.GetDirectoryIcon();
return Image.FromHbitmap(fileIconb.ToBitmap().GetHbitmap());
}


每次for循环 都会浪费20多兆的内存,请问高手们怎么办,谢谢!
...全文
935 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikolaichow 2017-11-28
精选
  • 打赏
  • 举报
回复
static 一般不建议释放 建议方法:
public Image GetImage(string ImagePath)
        {
            //路径是文件
            if (System.IO.File.Exists(ImagePath))
            {
                //获取高清大图标
                IntPtr hIcon = IconHelp.GetJumboIcon(IconHelp.GetIconIndex(ImagePath));
                System.Drawing.Icon fileIcon = (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
                return Image.FromHbitmap(fileIcon.ToBitmap().GetHbitmap());
}
}
建议调用:

  using(GetImage gImage=new GetImage(imagePath))
 {
 }
using会自动释放
hez2010 2018-03-22
  • 打赏
  • 举报
回复
加一句GC.Collect()
姓小名白丶 2018-03-21
  • 打赏
  • 举报
回复
using(你要释放的资源){写代码}//当你的代码用完这个资源 从using的作用域跳出的时候 会自动给你释放掉的
xuzuning 2018-03-21
  • 打赏
  • 举报
回复
去掉 Clone() 呢?
wxmtgg 2018-03-20
  • 打赏
  • 举报
回复
还是这样啊,没有用,每调用一次都会加载一次,浪费很多内存,有高手在吗?
正怒月神 2017-11-28
  • 打赏
  • 举报
回复
3,4楼正解
weixin_40706162 2017-11-28
  • 打赏
  • 举报
回复
using(对象等){//方法体} --------自动释放
夏天的枫 2017-10-30
  • 打赏
  • 举报
回复
using.....
吃货程序员 2017-10-30
  • 打赏
  • 举报
回复
涉及IO操作 使用之后请及时回收啊
wxmtgg 2017-10-30
  • 打赏
  • 举报
回复
没有分,就没有人回答吗?帮忙啊

110,567

社区成员

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

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

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