Почему ошибка "часть пути не найдена"?
Всем привет,
Я адаптировал фрагмент кода (рекурсивный запрос LINQ) для создания списка привязки(FileInfo) по локальной сети. Это хорошо работает на локальном компьютере и, похоже, прекрасно работает на большинстве удаленных сетевых компьютеров.
Кажется, с запросом возникла проблема, так как в конце концов я получаю сообщение об ошибке "часть сетевого пути не может быть найдена". Это кажется странным, учитывая, что запрос сначала считывает пути, а затем не может их найти...
(EDIT: я проверил, что путь, вызывающий ошибку, существует, и с ними также нет проблем безопасности. Это должно быть что-то в коде)
Я твердо верю, что болезнь Альцгеймера не распространится на компьютеры: Может ли кто-нибудь помочь мне прояснить путаницу, а также, если необходимо, исправить синтаксис?
Большое спасибо,
С уважением
Майкл
Что я уже пробовал:
Try For Each result As FileInfo In dirInfo.GetFiles(pattern).Select(Function(file) file).Where(Function(s) supportedExtensions.Contains(Path.GetExtension(s.Extension).ToLower())) queue.Enqueue(result) report(dirInfo.FullName) Next result Task.WaitAll(dirInfo.GetDirectories().Select( Function(d) Task.Factory.StartNew( Sub() InternalCollectFiles(d, pattern, queue))).ToArray()) Catch e As UnauthorizedAccessException Catch e As SecurityException Catch e As DirectoryNotFoundException MsgBox(String.Format("Error: {0}", e.Message)) Catch ex As Exception MsgBox(String.Format("Error in 'InternalCollectFiles': {0}", ex.Message)) End Try
F-ES Sitecore
Когда возникает ошибка, посмотрите, к какому пути она пытается получить доступ. Либо путь неправильный, так как есть проблема с кодом, либо путь правильный, но не может быть доступен из-за проблемы безопасности. У нас нет доступа к вашей системе или вашей сети, поэтому мы не можем проверить эти вещи для вас.
Maciej Los
Не делайте репостов: Как получить только определенные столбцы в этом выражении LINQ?[^]!
Sonhospa
Вы его читали? Это совершенно другой вопрос, а не репост.
Maciej Los
Да, я читал это дважды. Единственное отличие заключается в том, что вы не упомянули (в своем предыдущем вопросе), что приведенный выше код генерирует такое сообщение об ошибке...
Sonhospa
1. поиск подхода для расширения запроса LINQ
2. Пытаясь разрешить исключения directorynotfoundexception
Совершенно разные задачи. Иметь (больше) прекрасный день.
Maciej Los
Не сердись на меня...
Общая часть ваших вопросов (даже если это один из них для меня) - это ваш код, который работает не так, как вы ожидаете. Пока вы не решили вопрос с DirectoryNotFoundException
часть про расширения LINQ-запроса... менее важный. Или я ошибаюсь?
Я бы предложил переписать ваш вопрос и предоставить более подробную информацию о том, чего вы пытаетесь достичь. Было бы легче понять, как вам помочь.
Ваше здоровье!
Мацей
Sonhospa
Вы ошибаетесь. Ошибка возникает без какого-либо изменения запроса LINQ и, конечно же, не связана с его потенциальной дополнительной фильтрацией (которая, кстати, была первой нитью, которую я открыл). Конечно, два совершенно разных ответа, один на общий синтаксис LINQ и один на мою реализацию рекурсивной функции.
"Как бы я применил расширение к своей машине" имеет совершенно иную сферу применения, чем "в некоторых районах страны моя машина заикается", не так ли? И наверняка ответят разные люди. Это может быть тот же самый автомобиль, хотя (не обязательно).
А теперь давайте, пожалуйста, закончим эту чрезмерно академическую трату времени. Я не вижу, как кто-то будет получать удовольствие от репоста, но решил открыть два потока, заметив, что других критикуют за то, что они задают разные вопросы по своему коду в одном потоке, создавая таким образом запутанный поток, в котором никто не знает, что разрешено сейчас, а что нет.
Овации.
CHill60
Есть ли у папок, которые терпят неудачу, пробелы в их именах?
Sonhospa
Да, это так. Но 90% других папок, которые хорошо работают, также имеют пробелы в своих именах.
CHill60
Справедливо. Но я думаю, что Мацей его получил
Maciej Los
Я почти уверен, что причина вышеприведенной ошибки заключается в том, что задача еще не закончена.
Видеть: Класс Задач (System.Нарезание резьбы.Задачи) | Microsoft Docs[^]
c# - асинхронное перечисление папок - переполнение стека[^]
Sonhospa
Это, кажется, имеет большой смысл, так как задачи выполняются долго. Спасибо за подсказку, я немедленно перейду по ссылкам, которые вы мне предоставили!
Richard Deeming
Еще одна проблема, которую следует иметь в виду, заключается в том, что многие типы коллекций не являются потокобезопасными. Если не queue
является одним из типов из System.Collections.Concurrent
пространство имен, вы можете столкнуться с некоторыми причудливыми ошибками, когда начнете манипулировать им из нескольких потоков.
Maciej Los
Хорошая мысль, Ричард.