多线程使用Image.FromFile 加载图片时出现图片文件被锁定无法更新

编程开发
176
C#
多线程
图片文件被锁定
文件被锁定

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

主要是因为在调用图像处理的时候使用了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
        };
};

个人比较倾向第二种

c# 获取本机电脑名称、Ip信息
C#怎么获取windows系统支持的字体以及字体样式
C#解析获取GIF帧图像
C#开发怎么将Bitmap转换成BitmapImage
.NET5框架下使用HttpListener类实现http接口监听替代OWIN自我寄宿
C# 设置文件指定默认打开程序的设置方法
C#使用 CefSharp采集网页源html代码
C# HttpWebRequest POST 简单例子
FtpWebRequest 实现向FTP服务器上传文件
wpf调用文件目录打开目录选择对话框
PDF文件流接口弹出下载提示不是直接预览的解决办法
c# 实现windows服务程序的安装、启动、暂停以及卸载 等管理功能
暂无相关内容...
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删