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

链接到我之前提出的问题背景

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

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

该进程无法访问文件’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)); } 

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