PictureBox 不释放资源
PictureBox Not Releasing Resources
我的应用程序用于将扫描图像和附加信息存储到 SQL 数据库中。因为我使用图片框来完成此操作,所以我已经意识到图片框持有开放资源的问题。这会阻止我在关闭表单之前对原始文件执行任何操作。我尝试了各种方法来处理图片框,但都没有成功。需要帮助使用以下代码来释放图片框占用的资源。
using (OpenFileDialog GetPhoto = new OpenFileDialog())
{
GetPhoto.Filter = "images | *.jpg";
if (GetPhoto.ShowDialog() == DialogResult.OK)
{
pbPhoto.Image = Image.FromFile(GetPhoto.FileName);
txtPath.Text = GetPhoto.FileName;
txtTitle.Text = System.IO.Path.GetFileNameWithoutExtension(GetPhoto.FileName);
((MainPage)MdiParent).tsStatus.Text = txtPath.Text;
//GetPhoto.Dispose(); Tried this
//GetPhoto.Reset(); Tried this
//GC.Collect(): Tried this
}
}
将图像保存到我的数据库使用以下内容:
MemoryStream stream = new MemoryStream();
pbPhoto.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] pic = stream.ToArray();
通常是 FromFile() 导致锁定问题:(不是 PictureBox 本身)
The file remains locked until the Image is disposed.
变化:
pbPhoto.Image = Image.FromFile(GetPhoto.FileName);
收件人:
using (FileStream fs = new FileStream(GetPhoto.FileName, FileMode.Open))
{
if (pbPhoto.Image != null)
{
Image tmp = pbPhoto.Image;
pbPhoto.Image = null;
tmp.Dispose();
}
using (Image img = Image.FromStream(fs))
{
Bitmap bmp = new Bitmap(img);
pbPhoto.Image = bmp;
}
}
这应该制作图像的副本以供在 PictureBox 中使用,并解除文件本身的任何锁定。
我的应用程序用于将扫描图像和附加信息存储到 SQL 数据库中。因为我使用图片框来完成此操作,所以我已经意识到图片框持有开放资源的问题。这会阻止我在关闭表单之前对原始文件执行任何操作。我尝试了各种方法来处理图片框,但都没有成功。需要帮助使用以下代码来释放图片框占用的资源。
using (OpenFileDialog GetPhoto = new OpenFileDialog())
{
GetPhoto.Filter = "images | *.jpg";
if (GetPhoto.ShowDialog() == DialogResult.OK)
{
pbPhoto.Image = Image.FromFile(GetPhoto.FileName);
txtPath.Text = GetPhoto.FileName;
txtTitle.Text = System.IO.Path.GetFileNameWithoutExtension(GetPhoto.FileName);
((MainPage)MdiParent).tsStatus.Text = txtPath.Text;
//GetPhoto.Dispose(); Tried this
//GetPhoto.Reset(); Tried this
//GC.Collect(): Tried this
}
}
将图像保存到我的数据库使用以下内容:
MemoryStream stream = new MemoryStream();
pbPhoto.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] pic = stream.ToArray();
通常是 FromFile() 导致锁定问题:(不是 PictureBox 本身)
The file remains locked until the Image is disposed.
变化:
pbPhoto.Image = Image.FromFile(GetPhoto.FileName);
收件人:
using (FileStream fs = new FileStream(GetPhoto.FileName, FileMode.Open))
{
if (pbPhoto.Image != null)
{
Image tmp = pbPhoto.Image;
pbPhoto.Image = null;
tmp.Dispose();
}
using (Image img = Image.FromStream(fs))
{
Bitmap bmp = new Bitmap(img);
pbPhoto.Image = bmp;
}
}
这应该制作图像的副本以供在 PictureBox 中使用,并解除文件本身的任何锁定。