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



The information in this article applies to:

  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Studio .NET (2003), Enterprise Architect Edition
  • Microsoft Visual Studio .NET (2003), Enterprise Developer Edition
  • Microsoft Visual Studio .NET (2003), Academic Edition
  • Microsoft Visual Studio .NET (2002), Enterprise Architect Edition
  • Microsoft Visual Studio .NET (2002), Enterprise Developer Edition
  • 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:

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" 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); 
} 

REFERENCES

For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates


Modification Type:MinorLast Reviewed:9/27/2005
Keywords:kbHotfixServer kbQFE kbvs2002sp1sweep kbQFE kbfix kbBug KB817795 kbAudDeveloper kbAudITPRO