发布于 2016-06-12 18:48:41 | 71 次阅读 | 评论: 1 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ASP.NET

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。


本篇文章是对.NET BitmapImage 内存释放问题的解决方法进行了详细的分析介绍,需要的朋友参考下

网上查到的代码,多数的写法使用MemoryStream来实现:


new Thread(new ThreadStart(() => {
    var bitmap = new BitmapImage();
    bitmap.BeginInit();

    using (var stream = new MemoryStream(File.ReadAllBytes(...))) {
        bitmap.StreamSource = stream;
        bitmap.CacheOption = BitmapCacheOption.OnLoad;
        bitmap.EndInit();
        bitmap.Freeze();

    }
    this.Dispatcher.Invoke((Action)delegate {
        Image1.Source = bitmap;

    });

})).Start();


今天问题来了,当我设置了DecodeWidth为100时加载1000张图片,照理说内存应该维持100×100的1000张图片,但事实上他保留了所以原始图片的内存直到BitmapImage被回收时才释放,这让我很尴尬,换句话说using(MemoryStream)并没有真正按我们预期释放MemoryStream中的Buffer,那如何才能释放呢?
其实最简单就是直接弃用MemoryStream转投FileStream,如下:

using (var stream = new FileStream(path, FileMode.Open)) {
    image.BeginInit();
    image.StreamSource = stream;

    image.DecodePixelWidth = 100;

    image.CacheOption = BitmapCacheOption.OnLoad;     image.EndInit();     image.Freeze(); }




相关阅读 :
基于.NET BitmapImage 内存释放问题的解决方法详解
asp.net中eval不能定义变量的问题的解决方法
深入Lumisoft.NET组件开发碰到乱码等问题的解决方法
ASP.NET MVC中解析淘宝网页出现乱码问题的解决方法
ASP.NET页面借助IFrame提交表单数据所遇到问题的解决方法分享
asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net 错误:0x8007000B 异常的解决方法
ASP.NET拒绝访问临时目录的解决方法
解决asp.net ajax sys未定义的解决方法
IIS中ASP.NET连接SQL Server出错的解决方法
asp.net 因为数据库正在使用的解决方法
最新网友评论  共有(1)条评论 发布评论 返回顶部
gjrbjxa 发布于2016-07-27 15:52:59
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务