.NET 4.x System.UnauthorizedAccessException при заполнение списка list<> - C#
Формулировка задачи:
Здравствуйте, господа профи.
Сначала код, потом пояснения.
listBox заполняется. Отказ в доступе к System Volume Information игнорируется и выводится сообщение. Здесь вроде бы всё нормально. Но мне главное заполнить не listBox, а список list<string> из второго примера ниже.
Выкидывается ошибка:
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) из обработки исключения. Чего бы поправить в этом коде, чтобы список заполнялся нормально?
try { var dirs = from dir in Directory.EnumerateDirectories(@"D:\", "*", SearchOption.AllDirectories) select dir; foreach (var dir in dirs) { listBox1.Items.Add(dir.Substring(dir.LastIndexOf("\\") + 1)); } } catch (UnauthorizedAccessException ex) { MessageBox.Show(ex.ToString()); }
try { var dirs = from dir in Directory.EnumerateDirectories(@"D:\", "*", SearchOption.AllDirectories) select dir; List<string> allDirs = new List<string>(dirs); MessageBox.Show(allDirs[300].ToString()); } catch (UnauthorizedAccessException ex) {Console.Beep(100, 100);}
Решение задачи: «.NET 4.x System.UnauthorizedAccessException при заполнение списка list<>»
textual
Листинг программы
catch (UnauthorizedAccessException) { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д