我在描述我的工作流程如下:
我从目录获取图像文件。
创建PictureBox
用于显示图像的数组。
Image
根据我从目录中获得的文件创建一个数组。我正在创建此数组以使的图像源PictureBox
。
我正在将文件复制到另一个目录。这样:
File.Copy(allFiles[i],fullPath+fullName+"-AA"+nameString+ext);
现在,我想从目录中删除文件。为此,我正在这样做:
File.Delete(allFiles[i]);
但是它给了我这个错误:
该进程无法访问文件'C:\ G \ a.jpg',因为它正在被另一个进程使用。
请告诉我该如何解决?我没有在此处附加完整的代码,因为它会很大。请问我是否要查看代码的任何部分。
您可能是直接从文件中加载图像。例如,
PictureBox[i] = Image.FromFile(allFiles[i]);
如果查看该Image.FromFile
方法的文档,则会发现它实际上已锁定文件,直到将Image
其处置为止。(实际上,Image
该类中的大多数其他加载方法也会锁定文件,直到将Image
其处置为止。)
因此,要变通解决此问题,将图片文件的内容复制到内存,然后从那里加载它。例如,
PictureBox[i] = Image.FromStream(new MemoryStream(File.ReadAllBytes(allFiles[i])));
这样,文件本身将保持解锁状态,您可以自由移动/删除它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句