使用 PictureBox 控件时清除内存

Clear Memory when using PictureBox Control

我有一个 TreeView,当您单击一个节点时,代码获取该节点的标记,然后在 PictureBox 控件中显示图片。点击这么多之后,我收到一条控制台消息:

A first chance exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll

之后 PictureBox 将不再加载图片。在加载新图像之前,我尝试在 PictureBox 上使用 Dispose,但随后图像没有显示在 PictureBox 中。下面的代码是我为此使用的全部代码。

pbMainTools.Image = Image.FromFile(strImagePath & ".jpg")

我还使用节点中的标记从 DataTable 获取图像的路径:

For Each NewTool As DataRow In NTDS.Tools.Select("ToolID = " & tvTag)
     strImagePath = NewTool.Item("Image")
Next

如果您使用了 PictureBox.Dispose(),那么您将丢弃 整个控件 ,使其无法使用(因此您无法显示图像)。要仅处理图像,请执行:

pbMainTools.Image.Dispose()

请注意,这不一定会阻止应用程序抛出 OutOfMemoryException,因为一个原因可能是图像太大,GDI+ 无法加载到内存中。