在将图像用作PictureBox的源后,如何从文件夹中删除图像?

时间:2016-08-08 12:27:43

标签: c# winforms outlook vsto

Link to my previous question, which gives background to the situation

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

当我的程序关闭时,我会删除临时目录中的图像。由于我点击不同的图像后,预览工作正常。尝试关闭程序时出现以下错误(在此事件中删除图像):

  

该进程无法访问文件'c:\ temp \ DigitalArchive \ FILENAME.jpg',因为它正由另一个进程使用。

所以我试图通过以下方式清除temp文件夹中的图片来解决它:

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));
        }

1 个答案:

答案 0 :(得分:4)

Image.FromFile保持文件正在使用中。您可以改为使用Image.FromStream

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);