.NET 4.x System.UnauthorizedAccessException при заполнение списка list<> - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, господа профи. Сначала код, потом пояснения.
Листинг программы
  1. try
  2. {
  3. var dirs = from dir in Directory.EnumerateDirectories(@"D:\", "*", SearchOption.AllDirectories)
  4. select dir;
  5. foreach (var dir in dirs)
  6. {
  7. listBox1.Items.Add(dir.Substring(dir.LastIndexOf("\\") + 1));
  8. }
  9. }
  10. catch (UnauthorizedAccessException ex) { MessageBox.Show(ex.ToString()); }
listBox заполняется. Отказ в доступе к System Volume Information игнорируется и выводится сообщение. Здесь вроде бы всё нормально. Но мне главное заполнить не listBox, а список list<string> из второго примера ниже.
Листинг программы
  1. try
  2. {
  3. var dirs = from dir in Directory.EnumerateDirectories(@"D:\", "*", SearchOption.AllDirectories)
  4. select dir;
  5. List<string> allDirs = new List<string>(dirs);
  6. MessageBox.Show(allDirs[300].ToString());
  7. }
  8. catch (UnauthorizedAccessException ex) {Console.Beep(100, 100);}
Выкидывается ошибка: System.UnauthorizedAccessException: Отказано в доступе по пути "D:\System Volume Information\". в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.FileSystemEnumerableIterator`1.AddSearchableDirsToStack(SearchData localSearchData) в System.IO.FileSystemEnumerableIterator`1.MoveNext() в System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() в System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) Разве в этом случае не происходит игнорирование отказавшей в доступе папки как при заполнении listBox? После передачи dirs в конструктор list<string>() у меня строка, где я хочу посмотреть на 300-ый элемент списка. Но до этого места выполнение кода не доходит. Вместо окна MessageBox я слышу Console.Beep(100, 100) из обработки исключения. Чего бы поправить в этом коде, чтобы список заполнялся нормально?

Решение задачи: «.NET 4.x System.UnauthorizedAccessException при заполнение списка list<>»

textual
Листинг программы
  1. catch (UnauthorizedAccessException) { }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы