Tag: collect

我想要回忆我的记忆! 我怎样才能真正处置控件?

我有一个我正在制作的应用程序,它创建了大量的窗口控件(按钮和标签等)。 它们都是通过function动态制作的。 我遇到的问题是,当我删除控件并处理它们时,它们不会从内存中删除。 void loadALoadOfStuff() { while(tabControlToClear.Controls.Count > 0) tabControlToClear.Controls[0].Dispose(); //I even put in: GC.Collect(); GC.WaitForPendingFinalizers(); foreach(String pagename in globalList) tabControlToClear.Controls.Add(MakeATab(pagename)); } TabPage MakeATab(string tabText) { TabPage newT = new MakeATab(); newT.Text = tabText; //Fill page with controls with methods like this return newT; } 现在由于某种原因,这只是没有给我回忆,所以当进程运行5次时,我最终会出现内存不足的情况。 我是对象和控制处置的新手,但是通过庞大的网络仍然没有给我任何指示,所以如果你们有任何想法,我会很高兴听到它。 更新:我一直在观察用户对象的创建和销毁(taskmanager),并注意到我创建了一个标签页,添加了一个单击处理程序,添加了一个面板,添加了两个按钮,包括点击处理程序,工具提示和背景图像(我认为这是哪里问题是)。 该应用程序说它创建了8个新项目,但是当我运行我的处理时,我只从内存中删除4个。 我一直试图删除事件处理程序,但它似乎没有任何区别。 解决!!! 当我向面板添加新项目时,我向他们传递了一个工具提示(愚蠢,但我正在学习)。 对于任何有同样问题的人,(感谢下面的人的评论和指示。我发现,为了使控件真正处置(因为我意识到我错误地把它),是: 1:如果你有工具提示,请确认它是可以访问的! 不要做我想做的事! […]