昨天碰到棘手的问题, 最终发现原因, 发一贴, 希望对碰到同样问题的同学有所帮助
当用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也是人创造的, 只要是人创造的事物就一定会有缺陷, 人能做得的就是让问题更少, 或者把问题数量收敛到一个区域
估计其它文件操作也会有此问题, 抛砖引玉, 望大家留言补充
希望对大家有帮助
本文探讨了使用C#进行图像处理时可能遇到的内存泄漏问题,特别是通过Image.FromFile加载图片时不当处理引发的问题,并提供了解决方案。


被折叠的 条评论
为什么被折叠?



