Como limpar os controles () sem causar vazamento de memória

Depois de ler sobreControl.Clear(); causando vazamento de memória (verificado em MSDN), Fiquei me perguntando se

while (Controls.Count > 0) Controls[0].Dispose();

será suficiente ou eu tenho que iterar recursivamente por todos os controles dentro dos controle

Além disso, existe algum motivo para fazer umaControl.Clear(); depois disso? (como eu vi alguém dizendo em algum lugar)?

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion