在GetRowData事件处理程序中设置图标时,Infralution VirtualTree泄漏GDI +对象
时间:2020-03-06 14:32:49 来源:igfitidea点击:
我们已经看到当Infralution VirtualTree控件在GetRowData事件中分配图标时,似乎是GDI对象泄漏。 VirtualTree包含在TabControl中包含的控件中。移开并返回树将导致任务管理器中的" GDI对象"计数器不断增加。在注释掉GetRowData事件(基本上消除了图标)之后,来回切换到该选项卡不会导致GDI对象计数增加。
这已经成为我们应用程序的问题,因为它的多个实例在客户端计算机上一次运行,并且由于GDI对象创建错误,我们的应用程序在崩溃时崩溃了。
无论如何,有什么要在Tree控件上抢先进行清理(除了处理它之外?)。我曾考虑将树初始化代码移出设计器,以便每次都可以处置/重新初始化它,但担心会影响设计整体控件的能力。
解决方案
我们可以看到GetRowData的代码吗?如果此功能为图标分配GDI对象,则解决方案是重新使用图标,而不是每次都重新创建它们。