图片由另一个进程使用

时间:2009-09-17 06:46:43

标签: vb.net

在我的Windows应用程序中有一个图像保存过程。我可以保存不同的图像。图像细节将在网格中看到,当我点击网格中的相应行时,图像将显示在picturebox.i想要删除按删除键打开图片。我用了 “deletefile(path)”此操作的代码。但是有一个错误“此文件被另一个进程使用。”如果有人知道此问题的解决方案,请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:1)

您是否有对从该文件创建的Bitmap对象的引用?如果是这样,Bitmap对象将锁定该文件,并阻止您删除它。

问题不在于您删除文件的位置,而在于您打开图像以显示文件的方式。您是否可以添加一些显示如何加载图像的代码?

使用某些列表Bitmap.FromFile加载图像时,Bitmap对象会一直锁定文件,直到它被处理掉。所以你可以简单地使用

using(Bitmap bmp = Bitmap.FromFile(path))
{
  /* The code using the bitmap to display it goes here */
}

构造一旦你不需要它就强制它释放文件。这将阻止它锁定。它锁定的原因是它在创建位图对象时不会在内存中加载整个位图,它会根据需要随意加载它,因此需要锁定文件。

答案 1 :(得分:0)

使用Image.FromStream打开图片文件,并确保在加载图片后close stream。这样你就不会锁定文件了。

评论后添加。
我手头没有Visual Studio,而且我是一个c#guy,但看起来应该是这样的。

Dim stream As New FileStream(specified_path, FileMode.Open)
Dim image  As Image = Image.FromStream(stream)
picturebox1.image = image
stream.Close()
相关问题