最近用C#的前端项目,写了PictureBox展示并上传图片。想删除掉已经展示和上传的图片,提示资源正在使用中不能删除。
查了一些原因,总结原因是PictureBox控件占用着图片资源,不允许删除。
从PictureBox展示图片入手,可以采用以下两个解决办法:
1:使用Bitmap类转接图片资源
Image bmp = new Bitmap(img);
this.twoPictureBox.Image = bmp;
img.Dispose();
2、让PictureBox接收文件流
private MemoryStream ReadFile(string path)
{
if (!File.Exists(path))
return null;
using (FileStream file = new FileStream(path, FileMode.Open))
{
byte[] b = new byte[file.Length];
file.Read(b, 0, b.Length);
MemoryStream stream = new MemoryStream(b);
return stream;
}
}
private Image GetFile(string path)
{
MemoryStream stream = ReadFile(path);
return stream == null ? null : Image.FromStream(stream);
}
this.twoPictureBox.Image = GetFile(filePath);
最后,删除时PictureBox释放掉资源,再删除文件
twoPictureBox.Image.Dispose();
twoPictureBox.Image = null;
File.Delete(filePath);