Microsoft KB Archive/817795

= FIX: The ToolTip component may cause a memory leak when it is added to a child MDI form in Visual Studio .NET =

Article ID: 817795

Article Last Modified on 9/27/2005

-

APPLIES TO


 * Microsoft .NET Framework 1.0
 * Microsoft .NET Framework 1.1
 * Microsoft Visual Studio .NET 2003 Enterprise Architect
 * Microsoft Visual Studio .NET 2003 Enterprise Developer
 * Microsoft Visual Studio .NET 2003 Academic Edition
 * Microsoft Visual Studio .NET 2002 Enterprise Architect
 * Microsoft Visual Studio .NET 2002 Enterprise Developer
 * Microsoft Visual Studio .NET 2002 Professional Edition
 * Microsoft Visual Studio .NET 2002 Academic Edition

-





SYMPTOMS
When you work with ToolTip components in Microsoft Visual Studio .NET with Windows Forms in multiple-document interface (MDI) mode, your application may experience a memory leak every time that the ToolTip components are used on the child MDI form. You may notice this problem as an increase in the Graphics Device Interface (GDI) Object count that Microsoft Windows Task Manager displays as the operation repeats.

To view the GDI Object count in Task Manager, follow these steps:
 * 1) Open the Task Manager window.
 * 2) On the View menu, click Select Columns.
 * 3) In the Select Columns dialog box, click to select GDI Objects.



CAUSE
This problem occurs when you have a ToolTip component embedded on a child MDI form, and the child MDI form is destroyed. The ToolTip component is not garbage collected after the MDI form is destroyed.



RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft .NET Framework 1.0 or Microsoft .NET Framework 1.1. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

867461.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section.



WORKAROUND
For MDI forms that have ToolTip components, add the following code to the MDI form to destroy all ToolTip components, when the form is destroyed: protected override void Dispose(bool disposing) { If (disposing) { If (components != null) { components.Dispose; components = null; } If (toolTip1 != null) { // Code to add toolTip1.Dispose; // toolTip1 = null; // } // } base.Dipose(disposing); }

