1

我有一个使用以下代码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 状态,因此它锁定了它加载的最后一个图像。因此,每当我删除最后一张图像(也就是列表中唯一的图像)时,我都会尝试删除锁定的文件。

这看起来对吗?我对 C# 很陌生,我很高兴它现在可以工作。

4

0 回答 0