WPF中删除打开过的图片
原文:WPF中删除打开过的图片

在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常。即使当前文件是打开后关闭过的也不行。

这个问题的原因很简单,是因为WPF的缓存策略导致图片被锁定了,解决的方式不是用默认的ImageSource的构造方法,改用如下方式:

ImageSource getImage(string file)
    {
        var bmp = new BitmapImage();
        bmp.BeginInit();
        bmp.CacheOption = BitmapCacheOption.OnLoad;        //这一行很重要
        bmp.UriSource = new Uri(file);
        bmp.EndInit();

return bmp;
    }

这种方式本身并没有什么问题,但今天发现了更简单的一个方法,只要一行代码即可:

BitmapFrame.Create(new Uri(file), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);

这里记录一下,以后主要就用这种方式了。

posted on 2017-10-10 15:07 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/7645721.html

WPF中删除打开过的图片相关推荐

  1. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法

    为了让表格看起来更加直观,很多朋友都会在Excel中插入图片.那么,当我们大批量插入图片时,如果想要删除的话,应该怎么办呢?以下是系统城小编为您带来的电脑中删除Excel2010表格多余图片的三种方法 ...

  2. 在WPF中加载gif动态图片

    向WPF中加载动态图片有很多种办法,下面介绍一种比较简单的办法. 右键项目,在管理程序包中添加XamlAnimatedGif包,进行安装. . 在设计文件中添加头文件XamlAnimatedGif的头 ...

  3. WPF中显示任意目录的图片或其他资源文件

    最近在做一个WPF的抽奖程序,需要显示人员照片.做的时候把照片全都加到项目里了,作为内容,在ListBox或其他控件中绑定,可以正常显示.但人员照片需要经常添加修改的,总不能每次都重新编译项目吧.因此 ...

  4. WPF利用MediaFoundation打开摄像头捕捉图片

    主要代码 以同步的方式获得帧 REM MediaFoundation的.net 类库 http://mfnet.sourceforge.net Imports MediaFoundation Impo ...

  5. VS2005中删除最近打开的项目和文件的记录

                VS2005中删除最近打开的项目和文件的记录 VS2005中总是保留最近打开的项目和文件的记录,甚至是以删除的它也不删,-_-! 下面介绍几种删除的方法: 第一种:建立一个ba ...

  6. ubuntu中命令打开图片、文档、音乐、视频等

    ubuntu中命令打开图片.文档.音乐.视频等 安装播放软件 sudo apt install libdvdnav4 libdvdread4 gstreamer1.0-plugins-bad gstr ...

  7. WPF 中动态创建和删除控件

    WPF 中动态创建和删除控件 原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件 ...

  8. [WPF]WPF中材质制作——图片和矢量图之争

    如果要做下面这样的一个东西作为背景.你会如何做呢? 图1. 目标背景效果 方案一,用PS画出来.然后把这个PNG图片作为背景色.这个方案可以,但是如果想让这个线的颜色可配置呢?如何线的粗细不确定呢?无 ...

  9. win10照片查看器_图片打开方式中找不到Windows图片查看器怎么办

    如何在电脑中使用默认的windows图片查看器来打开图片进行查看的?有时我们可能无法找到Windows图片查看器工具,接下来小编就与大家分享,一种简单的利用windows图片查看器查看图片的具体方法. ...

最新文章

  1. 【Linux】5_进程管理
  2. java线程睡眠分析,java线程睡眠有关问题
  3. 数据产品经理的5大阶段和6步作战模型
  4. 面试官:你给我画一下秒杀系统的架构图!
  5. 了解JavaScript中的prototype (实例)
  6. 带你一文看懂--应用层、传输层的协议,HTTP协议及实现,UDP和TCP的报文格式以及为什么3次握手和4次挥手
  7. Realm的入门使用
  8. 配置php错误导入文件,php 导入文件(逻辑处理)
  9. new delete 之placement new 和placement delete
  10. MySQL 管理工具:Navicat for MySQL 8.0.19 中文版(破解版)
  11. Drool学习记录(一) 概念、Helloworld
  12. ping tracert 用法
  13. 开式系统管径推荐选型_列管式换热器选型设计计算
  14. 如何做好手机APP测试?APP测试流程及解决方案
  15. 无刷直流电机matlab建模,基于MATLAB的无刷直流电机建模方法_郭丹蕊
  16. 【Sentieon】基因测序数据NGS二级分析加速软件模块介绍
  17. 数据组,请求组,职责,用户关系
  18. android生成图片不失真,Android的PdfRenderer类生成低质量图像
  19. Linux下更新git(亲测有效)
  20. C++::namespace

热门文章

  1. php 查询and or,php – SQL查询多个AND和OR不起作用
  2. java对hashmap迭代_Java:通过HashMap迭代,这样更有效率?
  3. usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...
  4. 二叉树中的最大路径和
  5. c++ socket学习(1.6)
  6. strictmath_Java StrictMath ceil()方法与示例
  7. css中的node.js_在Node App中使用基本HTML,CSS和JavaScript
  8. JavaScript中的String()函数与示例
  9. 如何关掉Microsoft Office Click-to-Run服务
  10. 利用kali的msf提取汇编机器码(shellcode)