1

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 ”。

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

你有什么想法吗?

谢谢。

4

0 回答 0