ActiveSkin GDI泄漏

时间:2012-07-03 12:50:48

标签: gdi memory-leaks skin

ActiveSkin用于我们的所有形式的应用程序,它最初是在VB6中开发的,后来迁移到VB.NET中。 这个非托管代码包装在Interop中,并在我们的类SkinForm中声明,它由我们的应用程序中的所有表单继承。

现在我们在类中的OnFormClosing方法中有以下代码:

MyBase.OnFormClosing(e)
If Not ActiveSkin Is Nothing AndAlso Me.Controls.Contains(ActiveSkin) Then
    Me.Controls.Remove(ActiveSkin)
End If
ActiveSkin = Nothing

ActiveSkin - 它是ActiveSkin库中SkinForm类的包装器。

每个表单关闭后都会发生GDI泄漏。

如果我们添加以下代码:

ActiveSkin.Dispose() 
从控件集合中删除它后

。泄漏消失了。但是在任何形式的第一次结束时,我们得到以下消息(在应用程序执行期间只有一次):

“的警告!此应用程序是使用ActiveSkin控件的试用版创建的。 您可以在此处注册ActiveSkin:http://www.softshape.com/activeskin “。

当然我们有图书馆的许可证。

你有什么想法吗?

感谢。

0 个答案:

没有答案