我有一张Image的地址列表。使用此代码,我可以正确读取图像:
List<Image> ImageList = new List<Image>();
List<string> fileNameList = new List<string>();
foreach (var fileName in fileNameList)
{
var request = WebRequest.Create(fileName);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(Username, Password);
using (var response = (FtpWebResponse)request.GetResponse())
using (var stream = response.GetResponseStream())
using (var img = Image.FromStream(stream))
{
img.Save(@"D:\ax.jpg", ImageFormat.Jpeg);
ImageList.Add(img);
}
}
在此ImageList.Add(img);
行img
和ImageList
中的项都为真之前。但是当它从最后一个using
出来时,所有ImageList的属性都变为“引发类型'System.ArgumentException'的异常”
例如Height
的属性更改为:
'((new System.Collections.Generic.Mscorlib_CollectionDebugView<System.Drawing.Image>(ImageList)).Items[0]).Height' threw an exception of type 'System.ArgumentException'
我的代码出了什么问题?
答案 0 :(得分:1)
不要对图像使用using
语句,它会在离开块时配置图像
using (var stream = response.GetResponseStream())
{
var img = Image.FromStream(stream);
img.Save(@"D:\ax.jpg", ImageFormat.Jpeg);
ImageList.Add(img);
}