基于.NET BitmapImage 內(nèi)存釋放問題的解決方法詳解_.Net教程
推薦:解析WPF綁定層次結(jié)構(gòu)數(shù)據(jù)的應(yīng)用詳解本文講述WPF中單層次數(shù)據(jù)和多層次數(shù)據(jù)的綁定方法,主要闡述數(shù)據(jù)綁定的顯示層面,其中涉及了ListBox和Treeview控件。并說明它們之間的差異
網(wǎng)上查到的代碼,多數(shù)的寫法使用MemoryStream來實(shí)現(xiàn):
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();
今天問題來了,當(dāng)我設(shè)置了DecodeWidth為100時(shí)加載1000張圖片,照理說內(nèi)存應(yīng)該維持100×100的1000張圖片,但事實(shí)上他保留了所以原始圖片的內(nèi)存直到BitmapImage被回收時(shí)才釋放,這讓我很尷尬,換句話說using(MemoryStream)并沒有真正按我們預(yù)期釋放MemoryStream中的Buffer,那如何才能釋放呢?
其實(shí)最簡(jiǎn)單就是直接棄用MemoryStream轉(zhuǎn)投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();
}
分享:解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法本篇文章是對(duì)WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 從文本文件讀取行信息
- 淺談ASP.NET兩個(gè)截取字符串的實(shí)用方法技巧
- 如何使ASP.NET 避免頁(yè)面重新整理時(shí)重復(fù)送出
- 怎樣使.NET命名空間符合標(biāo)準(zhǔn)
- 關(guān)閉按鈕點(diǎn)擊事件的捕捉
- CheckBoxList兩列并排編譯為表格顯示具體實(shí)現(xiàn)
- 淺談ASP.NET MVC框架內(nèi)置AJAX支持編程技術(shù)
- 解讀 .NET開發(fā)者常犯的錯(cuò)誤
- 基于.NET平臺(tái)的分層架構(gòu)實(shí)戰(zhàn)(一) 綜述
- SQL Server 2005中插入XML數(shù)據(jù)方法
- 相關(guān)鏈接:
- 教程說明:
.Net教程-基于.NET BitmapImage 內(nèi)存釋放問題的解決方法詳解
。