2

我有以下 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。我知道错误的含义,但我不知道如何关闭打开文件的句柄。

4

2 回答 2

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);
于 2013-04-11T08:09:43.303 回答
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);
于 2013-04-11T08:09:29.023 回答