【发布时间】:2011-10-10 20:18:08
【问题描述】:
我有一个简单的表单 (MainForm),它打开另一个表单 (SubForm),上面有一个 ToolStrip。
被调用的表单上没有其他内容。调用表单只有一个按钮。
由于 SystemEvents.UserPreferenceChanged 有一个事件处理程序,被调用的表单的内存永远不会被回收。我读到这是一个在 .NET 3.5.1 中得到修复的问题。
[编辑该应用程序在 3.5.1 上运行,因此要么它没有真正修复,要么我做了一些不同的事情]
我可以做点什么让 GC 可以回收子表单的内存吗?
只要我删除 ToolStrip,表单子表单就可以再次被垃圾收集。
主窗体
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SubForm subForm = new SubForm();
subForm.ShowDialog();
}
}
子表单
public partial class SubForm : Form
{
public SubForm()
{
InitializeComponent();
}
}
带有工具条的实例保留图
【问题讨论】:
-
问题是什么?需要知道如何更新 .NET 以便修复错误?启用 Windows 更新。
-
我猜不清楚该应用程序是否在版本 3.5.1 上运行。所以升级不会解决问题。
-
这确实解决了它。我没有使用 dispose,因为在使用 ToolStrip 时它没有改变 .NET 2.0 中的任何内容,但现在它确实有效。您可以发表评论作为答案吗?
标签: winforms .net-3.5 memory-leaks