在我的应用程序中,我有许多动态创建的RichTextBoxes。我发现这个应用程序存在内存泄漏问题,这是由RichTextBox控件引起的。为了证明内存泄漏是由控件引起的,我编写了以下测试方法:
for (int i = 0; i < 3000; i++)
{
Control rich = new RichTextBox();
pnl.Content = rich;
}
GC.Collect();
GC.WaitForPendingFinalizers();
pnl是在Xaml代码中声明的ContentControl。
如果运行以下代码,您会发现内存使用量正在迅速增长。
有什么解决问题的想法吗? 我考虑过创建一个对象池,但这会使我的应用程序变得复杂,我宁愿避免这种情况。
编辑:我已经添加了垃圾回收器的调用以证明对象没有被垃圾回收 - 使用和不使用GC collect方法时内存使用量没有改善。
请注意,在循环内调用rich.Dispose
可以消除内存使用量的增长。