zoukankan      html  css  js  c++  java
  • WPF BitmapImage 图片资源正在被另一个进程使用

    做WPF项目时遇到不同进程读取同一个路径的图片,提示图片资源正在被另一个进程使用。

    string path="c:\1.png";
    
    BitmapImage bp = new BitmapImage(new Uri(path, UriKind.Relative));
    

    这时候不同进程用bp是会报错,异常的根本原因是因为BitmapImage没有Dispose()。

    上网查,找到方法http://www.cnblogs.com/leco/archive/2011/02/21/1959781.html,

    北平 Leco's blog

    使用流来读图片

    /// <summary>
            /// 解决不同进程读取同一张图片的问题
            /// </summary>
            /// <param name="filePath"></param>
            /// <returns></returns>
            private BitmapImage InitImage(string filePath)
            {
                BitmapImage bitmapImage;
                using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
                {
                    FileInfo fi = new FileInfo(filePath);
                    byte[] bytes = reader.ReadBytes((int)fi.Length);
                    reader.Close();
    
                    //image = new Image();
                    bitmapImage = new BitmapImage();
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = new MemoryStream(bytes);
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                    //image.Source = bitmapImage;
                    reader.Dispose();
                }
                return bitmapImage;
            }
    

      调用:

    string path="c:\1.png";
    BitmapImage bp = InitImage(path);

      

  • 相关阅读:
    textarea输入字符有限制
    linux 简单命令
    jQuery animate()
    两张图切换
    表单验证 靠name获取
    jquery验证手机号码
    倒计时
    锚点链接 阻止a标签跳转
    滚动监听: bootstrap 的scrollspy
    MySQL 02
  • 原文地址:https://www.cnblogs.com/MarcLiu/p/3834298.html
Copyright © 2011-2022 走看看