c # Невозможно получить список подкаталогов - PullRequest
0 голосов
/ 07 октября 2010

Я видел этот код (и аналогичный) по всей сети, но я просто не могу заставить его работать. Всякий раз, когда я отлаживаю его построчно, он выходит из отладки и загружает приложение. Сообщения об ошибках не отображаются, и любой код после строки «неисправность» остается необработанным.

Вот код нарушения:

foreach (string folder in allFolders)
{
    string[] subFolders = Directory.GetDirectories(folder, 
        "*", SearchOption.AllDirectories);
    MessageBox.Show("Test");
}

Введен цикл foreach, но окно сообщения никогда не отображается.

Если я удаляю SearchOption.AllDirectories, код успешно обрабатывается, но мне нужен какой-то способ включить все подкаталоги в каталоги.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 07 октября 2010

Ваш код отлично работает для меня.
Мне кажется, что этот вызов метода просто занимает много времени.Например, если в allFolders есть корневой каталог, вам придется подождать несколько минут (зависит от параметров вашей системы).Вы проверяли этот фрагмент кода для каталогов с несколькими вложенными каталогами?
Я предположил, что вы работаете в winforms, а выполнение просто не достигает CallBox.Show call.

1 голос
/ 07 октября 2010

MessageBox.Show не работает, потому что ваш код находится в веб-среде, а MessageBox используется в winform. Обычно мы используем javascript для отображения окна сообщения, например alert('hi').

0 голосов
/ 07 октября 2010

Протестировал ваш код, и он работает нормально, поэтому проблема может быть в другом месте кода, или это может быть проблема с правами доступа, хотя при возникновении исключения MSGBOX тоже показывает ОК.

        List<string> allFolders = new List<string>();
        allFolders.Add(@"C:\joomla\");

        foreach (string folder in allFolders)
        {
            string[] subFolders = Directory.GetDirectories(folder, "*", SearchOption.AllDirectories);
            MessageBox.Show("Test");
        }
...