Como limitar a profundidade de uma pesquisa de subdiretório recursiva

Atualmente, tenho uma função que agarra todas as pastas e subpastas para verificar as ACLs em busca de uma pequena ferramenta que estou construindo, mas estou arrancando os cabelos tentando descobrir como limitar a profundidade que ela pode ter. Por exemplo, você tem uma pasta com 4 níveis de profundidade, mas eu quero poder pegar apenas 3 níveis para ACLs.

Atualmente, eu tenho o código assim:

private void StepThroughDirectories(string dir)
{
    string[] directories = Directory.GetDirectories(dir);
    try
    {
        foreach (string d in Directory.GetDirectories(dir))
        {
            if (recCount < (int)Depth)
            {
                GetACLs(d, new DirectoryInfo(d));
                pBar.Value += 1;
                //MessageBox.Show("Recursive Level: " + counter.ToString());
                recCount++;
                StepThroughDirectories(d);
            }
            else
            {
                recCount--;
            }
        }
    }
    catch (System.Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

Obviamente, isso não é tão bom como foi porque estou trabalhando no problema há algum tempo, mas se alguém puder me apontar na direção certa para resolver esse problema, eu ficaria muito feliz!

questionAnswers(3)

yourAnswerToTheQuestion