国产探花免费观看_亚洲丰满少妇自慰呻吟_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實現音頻文件循環順序播放的方法進行了詳細的分析介紹,需要的朋友參考下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤水市| 黄陵县| 迁西县| 彝良县| 安顺市| 瑞昌市| 新绛县| 浑源县| 宣恩县| 巴塘县| 元谋县| 罗甸县| 长宁县| 南江县| 冷水江市| 剑阁县| 明水县| 米林县| 昌邑市| 海原县| 信丰县| 千阳县| 宝丰县| 新龙县| 漳浦县| 临沭县| 酒泉市| 井研县| 文成县| 扎鲁特旗| 屯留县| 临漳县| 乃东县| 辽阳县| 扎兰屯市| 鱼台县| 乐都县| 饶阳县| 阿荣旗| 宁津县| 舟山市|