C#文件访问错误

本文关键字:错误 访问 文件 | 更新日期: 2023-09-27 18:08:30

我有以下C#代码:

string selectedFile = "D:'..'IMGP2695.JPG";
MyImage myImage = new MyImage();
Image image = Image.FromFile(selectedFile);
string thumbnail_name = CreateThumbnail(image);
myImage.height = image.Height + "px";
myImage.width = image.Width + "px";
ftp.upload(myImage.internalName, selectedFile, directory);

 The process cannot access the file `'D:'..'IMGP2695.JPG'` because it is being used by another process.

当代码尝试运行ftp.upload时,我得到了这个错误。我知道这个错误意味着什么,但我不知道如何关闭打开文件的句柄。

C#文件访问错误

尝试通过用using:包装Image.FromFiledispose图像对象

string selectedFile = "D:'..'IMGP2695.JPG";
MyImage myImage = new MyImage();
string thumbnail_name = string.empty;
using(Image image = Image.FromFile(selectedFile)){
   thumbnail_name = CreateThumbnail(image);
   myImage.height = image.Height + "px";
   myImage.width = image.Width + "px";
}
ftp.upload(myImage.internalName, selectedFile, directory);

因为您在上传之前调用了Image image = Image.FromFile(selectedFile);,出于某种原因。

如果你查看Image.FromFile文档,你会看到以下字符串:

在释放图像之前,文件一直处于锁定状态。

这意味着,根据提供的代码,您甚至可以在上传完成后初始化Image。

ftp.upload("NAME_OF_THE_FILE_RECOVERED_FROM_FILE_ITSELF", selectedFile, directory);
Image image = Image.FromFile(selectedFile);