我有ListView
使用以下代码显示ImageList
:
注意:我正在使用XML将各个图像放入ImageList。
for (int i = 0; i < pictureList.Count; i++)
{
Image temp = Image.FromFile(pictureList[i].InnerXml.ToString());
Image img = temp.GetThumbnailImage(120, 120, null, new IntPtr());
imageList.Images.Add(img);
}
当我去删除项目时,我使用以下代码:
node.ParentNode.RemoveChild(node);// This deletes said node from the XML
doc.Save(xmlpath); // This then saves the updated XML document
imageList1.Images.Clear(); //Clear ImageList1
refreshThumbnails(); //Function that Regenerates thumbnails (without deleted image)
File.Delete(picturePath); //Deletes the image
上述代码仅在图像未在另一个XML中共享时执行。
我尝试添加计时器,直接从ListView
删除特定项目并清除ImageList
。他们都断断续地给出了一个通用的IO错误,说文件被锁定了。
唯一一致的是,如果它是专辑中的最后一个图像,它将始终抛出相同的I / O错误。
我的主要问题是如何避免此错误?我可以删除大约75%的时间,另外25%它会给我一个“文件锁定”错误。
=============================================
我想我找到了答案。
使用以下方式加载图像时
imageList.Images.Add(img);
我忘了处理后面的图像。由于我刷新缩略图以反映最新的XML状态,因此它会锁定它加载的最后一个图像。因此,每当我删除最后一张图像(AKA列表中唯一的图像)时,我试图删除一个锁定的文件。
这看起来是对的吗?我对C#很新,我很高兴它现在正在工作。