wpf BitmapImage缓存问题

news/2025/11/26 11:09:53/文章来源:https://www.cnblogs.com/JustWantToStudy/p/19271776

情景描述:通过BitmapImage加载图片显示到Image控件上,然后删除图片后,重新生成同路径的全新图片,再加载显示到Image控件上;

限制:图片必须是同名,非同名可以无视此问题;需要频繁加载图片,所以缓存机制不可免;

问题描述:当我删除图片A后,重新生成同路径同名的图片B并通过BitmapImage加载到Image上时,显示出来的还是图片A;原因就出在这个缓存,因为图片B跟A同名,所以加载的时候直接读取了缓存中的图片A;

解决方法:1、图片不同名就是了;

                  2、不缓存就是了,将bitmap.CreateOptions 设置为 BitmapCreateOptions.IgnoreImageCache

                  3、由于限制条件,以上方法都不能用,所以借助uri的查询参数机制,使用文件的最后修改时间戳作为查询参数:

                               当文件未替换时,时间戳不变 → Uri 不变 → 复用缓存(保持缓存机制)。

                        当文件替换后,时间戳变化 → Uri 变化 → 视为新资源,重新加载并缓存新图。

 

 

方法2:

 

var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad; // 在加载后关闭流,跟源文件断开连接
bitmap.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache; // 忽视图片缓存,每次加载都从源文件获取
bitmap.EndInit();

 

方法3:

// 获取绝对路径(避免相对路径解析歧义)
string absolutePath = Path.GetFullPath(path);

//  获取文件时间戳(不变)
var lastWriteTime = File.GetLastWriteTimeUtc(absolutePath);
long timeStamp = lastWriteTime.Ticks;

// 构建标准 file:// Uri
var fileUri = new Uri(absolutePath, UriKind.Absolute); // 基础 file:// 协议 Uri
// 拼接片段标识符(?t=xxx)
string uriWithTimeStamp = $"{fileUri.ToString()}?t={timeStamp}";
var imageUri = new Uri(uriWithTimeStamp, UriKind.Absolute);
// 保持原缓存逻辑创建 BitmapImage
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad; 
bitmap.UriSource = imageUri;
bitmap.EndInit();
bitmap.Freeze();

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PySpark - expr() and filter()

PySpark - expr() and filter() from pyspark.sql.functions import exprdf_filtered = df_filtered.withColumn(filtered_array, expr(filter(filtered_doc, x -> len(x) >= 4)))Please help me understand the…

QT之 QDockWidget 应用总结【转载】

1. 简介 要用QDockWidget就不得不提QMainWindow。 1.1 QMainWindow The QMainWindow class provides a main application window. QMainWindow类提供一个主应用窗口 A main window provides a framework for buildin…

转载

CSDN 按Ctrl+f查找content_views,找到这一行<div id="content_views" class="xxxxx">,右键点击Copy->Copy outerHTML 博客园 找到id为cnblogs_post_body的div-->右键之-->Copy--…

2025年机器人模具生产商权威推荐榜单:汽车内饰模具/无人机模具/汽车轻量化模具源头厂家精选

在工业自动化与机器人产业快速发展的推动下,模具作为制造业的核心工艺装备,其精度与效率直接决定机器人产品的质量与性能。高精度、高效率、长寿命的模具已成为机器人制造企业的核心竞争力。 机器人模具作为机器人产…

2025天津英国留学中介排名

2025天津英国留学中介排名一、天津英国留学中介怎么选?看看这些常见问题作为从事国际教育规划工作超过十年的我,经常被天津的学生和家长问及选择英国留学中介的各种问题。今天,2025年10月24日,我将基于多年的行业观…

邮件群发系统

公司财务要群发邮件,但是公司的邮件系统又不支持群发。所以就有了下面的代码:#!/usr/bin/env python3 # encoding: utf-8 """ 一个简单的图形界面邮件发送工具 适合不懂代码的同学,点按钮就能发邮件…

2025厦门留学机构排名榜

2025厦门留学机构排名榜一、厦门留学中介怎么选?这五大问题你可能也关心在准备留学的路上,许多厦门同学和家长都会反复思考这几个实际问题:厦门本地的留学机构哪家更靠谱?想要申请美国研究生,哪家中介的成功案例更…

基于Vue的教育学习网站04y8688l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,环境界面在最后面。

基于Vue的教育学习网站04y8688l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,环境界面在最后面。pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

2025留学中介出国

2025留学中介出国一、如何找留学中介:五大高频问题深度解析作为一名从事国际教育咨询工作超过15年的资深规划师,我每天都会接触到大量学生和家长的咨询。在2025年10月24日的今天,留学中介选择依然是准留学生家庭最关…

2025广州留学机构有哪些学校招生

2025广州留学机构有哪些学校招生作为拥有15年经验的国际教育规划师张伟,我每天都会接触到广州地区的学生和家长,他们最常纠结的问题往往是:2025年想去留学,但广州这么多中介,到底该信哪一家?选择机构时,很多细节…

JSAPIThree 事件系统学习笔记:处理交互的基础

以初学者视角梳理 JSAPIThree(mapvthree)的事件系统,介绍如何在 3D 场景中绑定事件、读取事件参数,以及掌握事件冒泡与性能要点。作为刚接触 mapvthree 的新手,今天我专门学习了事件系统。这里汇总最实用的内容,…

2025北京留学机构都有什么

2025北京留学机构都有什么一、2025年北京留学机构都有什么时间来到2025年10月24日,计划出国深造的同学和家长们,在搜索北京留学机构时,脑海中是否会浮现出这样几个问题:北京这么多留学中介,到底哪家更适合我的具体…

用户体验的无声博弈:兰亭妙微如何通过“无意识设计”留住用户

用户体验的无声博弈:兰亭妙微如何通过“无意识设计”留住用户您是否曾有过这样的体验:使用一款APP时,您无需思考,自然而然地就完成了想做的事,整个过程流畅得仿佛不存在任何阻碍?这种“无意识”的顺畅感,并非偶…

QDockWidget-窗体停靠

头文件#include <QDockWidget>QDockWidget是QWidget的子类,它生成那些可以停靠到视窗边缘并自适应大小的widget参考博客:https://blog.csdn.net/p942005405/article/details/102056954

【第6章 字符串】正则表达式支持模糊匹配吗?

是的,正则表达式 支持模糊匹配,但需注意:标准正则(如 Python 内置 re 模块)的模糊匹配能力有限,而扩展库(如 Python regex 模块)提供了更完善的模糊匹配功能。以下是具体说明:一、标准正则的“模糊匹配”(有…

2025年超细粉碎机厂家权威推荐榜单:超细粉体粉碎机/超微粉碎机/气流粉碎分级机源头厂家精选

在新材料、医药、化工等行业需求推动下,超细粉体设备正向着更精细化、智能化方向快速发展,技术创新成为企业核心竞争力。 超细粉碎机作为粉体行业的核心设备,其技术水平直接影响着粉体产品的粒度分布和纯度。随着新…

现今安徽香菇厂家推荐排行

摘要 安徽香菇行业近年来快速发展,依托当地丰富的自然资源和先进的加工技术,已成为中国香菇产业的重要基地。行业注重食品安全、品质控制和定制化服务,满足多元化市场需求。本文基于市场调研和用户口碑,为您推荐排…

2025年口碑好的安徽木耳品牌排名:品质与信赖的权威指南

文章摘要 安徽木耳行业在2025年迎来品质升级新阶段,随着消费者对食品安全和健康需求的提升,优质木耳品牌成为市场新宠。本文基于权威数据和市场调研,为您呈现当下安徽木耳品牌综合排名,重点推荐品质卓越、服务完善…

java mvn

java mvnmvn clean install:清理并构建项目,安装到本地仓库。 ‌12 mvn dependency:tree:查看依赖树,解决冲突。 ‌1注意事项确保groupId、artifactId、version唯一性,避免版本冲突。 ‌3 使用<properties>…

Windows64下32位程序文件系统重定向

Windows64下32位程序文件系统重定向 在默认情况下,64位环境运行32位程序,会为这个程序启用文件系统重定向。就是这个32位程序访问文件系统时(如 CreateFile/WinVerifyTrust 等操作),会把 C:\Windows\System32 文件…