C# 在图像被用作PictureBox的源之后,如何从文件夹中删除这些图像?

C# 在图像被用作PictureBox的源之后,如何从文件夹中删除这些图像?,c#,winforms,outlook,vsto,C#,Winforms,Outlook,Vsto,我通过编程更改保存附件的临时文件夹中的图像来回答我自己的问题。这给我带来了一个新的问题,当我修复我自己的问题时,我觉得与前者太分离了 当我的程序关闭时,我从临时目录中删除图像。因为我已经得到了预览工作后,点击不同的图像罚款。尝试关闭程序时出现以下错误(此事件中会删除图像): 进程无法访问文件“c:\temp\DigitalArchive\FILENAME.jpg”,因为其他进程正在使用该文件 因此,我试图通过以下方式解决此问题:在手动清除临时文件夹中的图片: if (picAttachPrevi

我通过编程更改保存附件的临时文件夹中的图像来回答我自己的问题。这给我带来了一个新的问题,当我修复我自己的问题时,我觉得与前者太分离了

当我的程序关闭时,我从临时目录中删除图像。因为我已经得到了预览工作后,点击不同的图像罚款。尝试关闭程序时出现以下错误(此事件中会删除图像):

进程无法访问文件“c:\temp\DigitalArchive\FILENAME.jpg”,因为其他进程正在使用该文件

因此,我试图通过以下方式解决此问题:在手动清除临时文件夹中的图片:

if (picAttachPreview.Image != null)
        {
            picAttachPreview.Image.Dispose();
            picAttachPreview.Refresh();
        }

        //Runs through each file in the temporary directory and removes them to clear folder
        foreach (string item in Directory.GetFiles(tempfolder))
        {
            File.Delete(item);
        }
编辑:我觉得我应该显示更新图像的位置以供参考:

if (chkAttachments.Text.Contains(".jpg"))
        {
            var selectedImage = chkAttachments.Text;
            picAttachPreview.Image = Image.FromFile(Path.Combine(tempfolder, selectedImage));
        }
保持文件处于使用状态。您可以使用


您似乎只在关闭应用程序时选择的一张图片上调用
Dispose
。我想您需要处理从该文件夹加载的所有图像。+1。你需要确保你处理了你在图片框中显示的或加载的所有图片。请参阅关于此错误的几十篇文章中的一篇@彼得杜尼奥回答没有明显重复的问题是我们所有人都会遇到的事情。当我发现一个确切而明显的重复问题时,我通常会使用我的权利将问题作为重复问题结束。但是,当我不能简单地找到一个明显的重复,而不是浪费时间去阅读一些没有投票权的答案,或者阅读一些没有被接受的答案的帖子,或者思考一些帖子可能对OP有什么帮助时,我可以像这样发布一个干净的答案。指责我污染了这个网站真是冒犯。@PeterDuniho谢谢你把我的问题标记为“完全重复”而不再回答更多的问题。没有解决我的问题。是为了一个不同的情况。从阅读所有的规则到如此,他们告诉你,你的问题必须针对具体的答案而具体,所以我试图尽可能详细地解释我的问题。你现在在批评一个给了我正确答案并试图帮助我的人。我已经阅读并尝试了您提供的链接中的解决方案,但它们解决的问题与我自己的不同。我的问题仍然没有解决,但作为从目录获取所有
*.jpg
文件的附带说明,您可以使用
var files=System.IO.directory.GetFiles(@“d:\pic”,“*.jpg”)
还可以使用
if(System.IO.Path.GetExtension(file.ToLower()==“.jpg”){}
var file = @"d:\pic\1.jpg";
using (var s = new System.IO.FileStream(file, System.IO.FileMode.Open))
{
    pictureBox1.Image = Image.FromStream(s);
}
System.IO.File.Delete(file);