使用ImageList从ListView中删除缩略图。文件已锁定?

时间:2011-12-01 02:33:36

标签: c# visual-studio-2010 listview .net-4.0 imagelist

我有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#很新,我很高兴它现在正在工作。

0 个答案:

没有答案