2

我有 ac# 应用程序,它以一种形式显示图像。我正在尝试覆盖这些图像并重新生成它们。我在尝试删除现有图像时遇到异常(在这种情况下是 png)。我尝试处理图片框正在使用的图像,然后将其设置为 null,但由于共享冲突,我仍然遇到异常。不过,我可以毫无问题地去资源管理器并删除文件。

在试图找出锁定此图像的进程时,进程监视器告诉我它vhost.exe是托管我的应用程序的进程。

我怎样才能解决这个问题?有什么方法可以让主机释放文件的锁定,以便我可以删除/重新创建它?最终,我有大量的图像生成为缩略图,只要我的数据库发生影响图形的更改,就需要更新这些图像。我不想认为我需要调用命令外壳来执行此操作。

感谢您的任何建议。

加里

4

1 回答 1

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);
}
于 2012-05-11T12:25:31.060 回答