多线程使用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
};
};
个人比较倾向第二种