I replaced:
panel.Controls.Clear();
with:
Clear(panel);
Where:
public static void Clear(C
I was probably disposing of some Control
s I was using later on in the code.
Dispose()
has nothing to do with memory under normal circumstances. It doesn't release memory, it doesn't remove the object from a collection, and it doesn't invoke the garbage collector. Instead, the purpose of .Dispose()
is to clean up non-memory resources: database connections, sockets, device handles, gdi handles, etc.
The only way this could possible help you fix a memory issue is if you're using custom controls that each rely on code in an unmanaged (non-.Net) dll.
You need remove controls you disposed, but there might be a better approach:
public static void Clear(Control ctrl)
{
foreach(Control c in ctrl.Controls) c.Dispose();
ctrl.Controls.Clear();
}