删除vshost.exe锁定的映像文件c#

时间:2012-05-11 12:20:05

标签: c# file sharing filelock

我有一个c#应用程序,它在表单中显示图像。我试图覆盖这些图像并重新生成它们。我在尝试删除现有图像时遇到异常(在这种情况下它是一个png)。我尝试处理图片框正在使用的图像,然后将其设置为null,但由于共享冲突,我仍然会收到异常。不过,我可以去探险家并删除文件而没有任何问题。

在尝试找出锁定此图像的进程时,Process Monitor告诉我托管我的应用程序的是vhost.exe

我该如何解决这个问题?有没有什么方法可以让主机释放文件上的锁,以便我可以删除/重新创建它?最终,我有大量的图像作为缩略图生成,只要我的数据库发生影响图形的更改,就需要更新。我讨厌认为我需要调用命令shell来执行此操作。

感谢您的任何建议。

加里

1 个答案:

答案 0 :(得分:4)

您可以尝试使用文件流加载图像,并在阅读后关闭它们。

FileStream fileStream = new FileStream("ImageName.jpg", FileMode.Open, FileAccess.Read);
yourPictureBox.Image = Image.FromStream(fileStream);
fileStream.Close();

或者代替明确关闭;你可以使用using声明;

using(FileStream fileStream = new FileStream("ImageName.jpg", FileMode.Open, FileAccess.Read))
{
    yourPictureBox.Image = Image.FromStream(fileStream);
}