C#文件访问错误

时间:2013-04-11 08:06:50

标签: c# ftp file-access

我有以下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时出现此错误。我知道错误意味着什么,但我不知道如何关闭打开文件的句柄。

2 个答案:

答案 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);