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()
从控件集合中删除后。泄漏消失。但是在任何形式的第一次关闭时,我们都会收到以下消息(在应用程序执行期间只有一次):
“<em>警告!此应用程序是使用 ActiveSkin 控件的试用版创建的。您可以在此处注册 ActiveSkin:http: //www.softshape.com/activeskin ”。
当然,我们有图书馆的许可证。
你有什么想法吗?
谢谢。