『QQ:1353814576』

多线程使用Image.FromFile 加载图片时出现图片文件被锁定异常问题


前段时间开发了一套医疗胶片打印系统,其中涉及了多线程图像处理,期间就碰到了图像文件被锁定导致文件无法更新的问题。

主要是因为在调用图像处理的时候使用了Image.FromFile 这个方法 导致文件在使用期间被锁定导致其他线程无法操作,同时也会导致内存占用变大所以必须要换一个方式来解决这个问题

以下是两种解决方案:

1.使用Bitmap 替换 Image (即将Image类转换成Bitmap类)

using(System.Drawing.Image img = System.Drawing.Image.FromFile(ImagePath))
{
      using(System.Drawing.Image bmp = new System.Drawing.Bitmap(img))
      {
        //TODO
      }
}

2.使用文件流的方式调用 (即使用FileStream类 将图像数据存入内存)

using(FileStream fileStream = new FileStream(ImagePath, FileMode.Open, FileAccess.Read)) 
{
        using(Image img = Image.FromStream(fileStream)) 
        {
           //TODO
        };
};

个人比较倾向第二种