我有以下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
时出现此错误。我知道错误意味着什么,但我不知道如何关闭打开文件的句柄。
答案 0 :(得分:2)
使用dispose
包裹Image.FromFile
来尝试using
图像对象:
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);
答案 1 :(得分:1)
因为您在上传之前调用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);