wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃

这篇具有很好参考价值的文章主要介绍了wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃,示例代码如下:

public static BitmapImage GetImage(string imagePath)   
{  
    BitmapImage bitmap = new BitmapImage();  
    if (File.Exists(imagePath))   
    {  
        bitmap.BeginInit();  
        bitmap.CacheOption = BitmapCacheOption.OnLoad;  
        using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath)))   
        {  
            bitmap.StreamSource = ms;  
            bitmap.EndInit();  
            bitmap.Freeze();  // 在这里释放资源  
        }  
    }  
    return bitmap;  
}

使用这个方法:

image1.Source = GetImage(path); // path为图片路径

请注意,BitmapImage的Freeze方法会将资源从垃圾收集器中释放,因此不会对应用程序的内存使用造成负担。不过请注意,在使用Image控件的时候,最好能及时释放资源,避免造成内存泄露。

 文章来源地址https://www.toymoban.com/news/detail-791832.html

到了这里,关于wpf 使用BitmapImage给Image的Source赋值,并释放原占用资源,避免删除原文件时导致程序崩溃的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VMware Workstation如何释放虚拟机占用的磁盘

    1、在VMware Workstation中安装Deepin和CentOS用于开发,但是时间久了虚拟机所占空间越来越大,但是在虚拟机中使用磁盘空间查看,显示的占用量远低于虚拟机占用的空间。 2、使用 虚拟机-设置-硬盘-碎片整理/压缩 均没有什么效果。 1、Vmware Workstation Pro 17/16/15 2、虚拟机Deepin/Cen

    2024年02月12日
    浏览(48)
  • 使用 UCS(On-Premises) 管理您的GPU资源池,释放AI大模型算力潜能

    本文分享自华为云社区《使用 UCS(On-Premises) 管理您的GPU资源池,释放AI大模型算力潜能》,作者:云容器大未来。 过去十余年,依托全球数据、算法、算力持续突破,人工智能全面走向应用,已成为社会生产生活的支柱性技术。2020年后,当自动驾驶、人脸识别等热门应用发展

    2024年02月12日
    浏览(42)
  • Linux中buff/cache内存占用过高,手动释放内存

    buff/cache内存占用太高 我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图:(可以看到总内存就251G,buff/cache占用了174G) 什么是buff buff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。 什么是cache cache(Page

    2024年02月12日
    浏览(45)
  • 《Linux系列》buff/cache占用太多内存,如何释放内存?

      当遇到很多日志文件时,想要清理部分日志,但是一个一个清理太过麻烦。所以希望通过从文件时间上做逻辑判断,实现把某一时间之前的文件删除。 ll查看所有的日志信息 wc -l统计数量 find查找文件命令 -name指定查找文件的名称 -mtime +n, 查找n天前的文件 -exec 执行脚本固

    2024年02月16日
    浏览(39)
  • linux下的buff/cache内存占用过高-手动清除释放内存

    buff/cache内存占用太高 我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图: 可以看到占用了377M的内存 什么是buff buff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。 什么是cache cache(Page Cache)是一种高速缓

    2024年02月07日
    浏览(97)
  • Sql Server 占用内存高,不释放内存,数据库连接不上 问题处理记录

    项目上反应生产线箱码不能上传到我们系统,我们的WMS软件退出后重新登录也一直登录失败,并且服务器上数据库占用内存过高,SSMS数据库连接不上。 好家伙SQL Server占用了34个G内存。 接口日志中连接数据库报错:System.Data.SqlClient.SqlException: 当前命令发生了严重错误。应放弃

    2024年02月14日
    浏览(74)
  • WPF 用户控件依赖注入赋值

    我一直想组件化得去开发WPF,因为我觉得将复杂问题简单化是最好的 cs部分 我将复杂的依赖注入的代码进行了优化,减少了重复内容的输入。 我现在依赖属性扩展封装在一个静态文件里面 记得UserControl.xaml里面绑定你ViewModel。这样的话有代码提示 我后面要根据Vue的单向数据

    2024年02月07日
    浏览(44)
  • unity学习(垃圾回收,资源释放)

    在C++中,所有你在堆上申请的内存空间,必须手动释放掉,否则就会造成内存的泄露。 C#使用了GC(Garbage Collector)来进行内存的管理以达到自动释放不需要的内存的目的,但是GC并不能做的十分完美,对于一些非托管资源,GC无能为力,这就要求我们必须手动的释放那么非托

    2024年02月16日
    浏览(30)
  • .NET C#基础(9):资源释放 - 需要介入的资源管理

       IDisposable 接口是一个用于约定可进行释放资源操作的接口,一个类实现该接口则意味着可以使用接口约定的方法 Dispose 来释放资源。其定义如下:   上述描述中可能存在两个问题:   1. 什么是“资源”?   2. C#是一个运行在含有垃圾回收(GC)平台上的语言,为

    2024年02月09日
    浏览(36)
  • C/C++ 实现动态资源文件释放

    当我们开发Windows应用程序时,通常会涉及到使用资源(Resource)的情况。资源可以包括图标、位图、字符串等,它们以二进制形式嵌入到可执行文件中。在某些情况下,我们可能需要从可执行文件中提取自定义资源并保存为独立的文件。在这篇博客文章中,我们将讨论如何使

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包