【发布时间】:2021-01-09 22:25:47
【问题描述】:
我正在尝试完全删除我的 PictureBox,因为我不再需要它了。我尝试使用 Dispose() 方法,这从 Form 中正确删除了 PBox,但没有从内存中删除...在应用 Dispose() 后,我创建了一个 PBox 并在其中加载相同的图像,然后调用 Dispose()再次等等...我在 'Diagnostic Tools / Process memory' 窗口中看到的是每次按下按钮时内存使用量都会增加(创建新的 PBox 并将图像加载到其中) ,但内存永远不会被释放...我也尝试使用 Controls.Remove() 方法但我得到了相同的结果!
那么问题来了:如何释放内存并彻底移除一个 PictureBox?
编辑: 好的..一段时间后,当程序用完大约 1Gb 的内存(通过创建 PBox/Dispose 循环)时,垃圾收集器自己激活并释放了程序使用的几乎所有内存!我误解了它是如何工作的......我认为每次使用 Dispose 方法后它都应该运行......所以看起来一切都很好,但是在我应用 Dispose 之后有没有办法从内存中手动释放 PBox?
【问题讨论】:
-
没有代码很难给出建议 - minimal reproducible example.
标签: c# winforms memory-management picturebox