Tentar substituir Controls.Clear () para evitar vazamento de memória não funciona - por quê?

Substituí:

panel.Controls.Clear();

com

Clear(panel);

Onde

public static void Clear(Control ctrl)
{
    while (ctrl.Controls.Count > 0) ctrl.Controls[0].Dispose();
}

E recebo o seguinte erro: emApplication.Run(new Form1()); System.ObjectDisposedException não foi tratado Não é possível acessar um objeto descartado. Nome do objeto: 'Label'.

Alguma idéia do porquê diss

Obrigado

EDIT: VejaComo limpar os controles () sem causar vazamento de memória

EDIT: Desculpe, provavelmente estou descartando algo que só quero remover dos pais. Vou verificar isso. Obrigado pelas respostas.

questionAnswers(3)

yourAnswerToTheQuestion