C# 文件读写与内存资源泄漏

本文探讨了使用C#进行图像处理时可能遇到的内存泄漏问题,特别是通过Image.FromFile加载图片时不当处理引发的问题,并提供了解决方案。

昨天碰到棘手的问题, 最终发现原因, 发一贴, 希望对碰到同样问题的同学有所帮助


当用Image image = Image.FromFile(path);解析文件时, 如果碰到异常, 当然不是Image.FromFile方法本身抛出的。 比如说在一个线程中调用Image.FromFile, 另外一个地方调用Thread.Abort终止线程, 就会产生"线程退出异常“.  

此时相关的文件和内存资源GC是没有办法对其进行回收的, 产生内存泄漏


正确的的代码写法是using(Image image = Image.FromFile(path)), 这个无论如何image都会Dispose


其它替代方法如Image.FromStream(stream), 记得using(XXXStream stream = XXX.GetStream())


话说.net是内存自动管理的语言, 但完全做到无内存泄漏是不可能的, .net也是人创造的, 只要是人创造的事物就一定会有缺陷, 人能做得的就是让问题更少, 或者把问题数量收敛到一个区域


估计其它文件操作也会有此问题, 抛砖引玉, 望大家留言补充 


希望对大家有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值