国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

基于.NET BitmapImage 內存釋放問題的解決方法詳解_.Net教程

2024-07-10 12:52:36
字體:
來源:轉載
供稿:網友

推薦:解析WPF綁定層次結構數據的應用詳解
本文講述WPF中單層次數據和多層次數據的綁定方法,主要闡述數據綁定的顯示層面,其中涉及了ListBox和Treeview控件。并說明它們之間的差異

網上查到的代碼,多數的寫法使用MemoryStream來實現:

復制代碼 代碼如下:www.CuoXIn.com

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,如下:
復制代碼 代碼如下:www.CuoXIn.com

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實現音頻文件循環順序播放的解決方法
本篇文章是對WPF實現音頻文件循環順序播放的方法進行了詳細的分析介紹,需要的朋友參考下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博兴县| 灵山县| 甘孜| 昭觉县| 航空| 武陟县| 丹巴县| 团风县| 开平市| 顺平县| 孝昌县| 吉隆县| 盐池县| 博野县| 苍梧县| 子洲县| 安宁市| 西平县| 饶河县| 奉新县| 三台县| 昌乐县| 肃宁县| 论坛| 松原市| 韩城市| 许昌县| 涟源市| 东辽县| 科技| 淮南市| 雅江县| 娄底市| 榆树市| 涞源县| 津市市| 宜兰县| 天台县| 德格县| 南丹县| 乃东县|