我正在寻找服务中的资源泄漏,并且好奇以下代码实际上是否可以在创建后锁定此文件。它似乎被锁定了,因为它在打开后被删除,然后再次保存?
根据评论进行修改:
稍后访问该文件并返回IOException,并显示该文件无法访问,因为该文件正由另一个进程使用。
另外,“img = new Bitmap(...)是否在创建文件时没有实际访问该文件?或者我是否关闭该文件?
using (Image img = new Bitmap(imgPath))
{
path = m_fpService.GetProcessedPath(irec, true);
if (File.Exists(imgPath))
{
File.Delete(imgPath);
}
img.RotateFlip((RotateFlipType)adjustedRotation);
img.Save(imgPath);
}
答案 0 :(得分:3)
文件名和路径可以相对于应用程序或 绝对路径。使用此构造函数打开具有以下内容的图像 文件格式:BMP,GIF,EXIF,JPG,PNG和TIFF。欲获得更多信息 有关支持的格式,请参阅位图类型。该文件保持锁定状态 直到位图被处理掉。
不确定为什么会这样,但我认为Bitmap
类可以延迟加载文件的一部分。对于该功能,它在构造函数运行后需要访问。
您可以使用构造函数的Stream-taking重载,并在您选择的时间关闭流。