#c# #visual-studio-code
#c# #visual-studio-code
Вопрос:
У меня есть консольное приложение. (C #, написанный в VSCode), который просматривает файлы (> 200000 за раз) и собирает из них данные. Он работает без каких-либо проблем, если исходные и целевые папки находятся на локальном компьютере. Также хорошо, если источником и местом назначения являются общие папки на другом компьютере. Проблема возникает, когда я устанавливаю источник и назначение так, чтобы они указывали на NAS (общую папку).
Я думаю, что это проблема с памятью, но как я могу быть уверен в этом сообщении об ошибке:
Microsoft Windows [версия 6.1.7601] Авторское право (c) 2009 Корпорация Майкрософт. Все права защищены. Необработанное исключение. System.IO.IOException: Недостаточно системных ресурсов для завершения запрошенной службы. : ‘W:2020-082020-08-18ID_GEBER_NG21_BOTVC52034208097F01BCS ‘ в System.IO.Enumeration.FileSystemEnumerator
1.CreateRelativeDirectoryHandle(ReadOnlySpan
1 относительный путь, полный путь строки) в System.IO.Enumeration.FileSystemEnumerator1.MoveNext() at System.Collections.Generic.LargeArrayBuilder
1.Добавьте диапазон (источник IEnumerable1 items) at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable
1) в System.Linq.Перечисляемый.Собрать [TSource] (источник IEnumerable`1) в System.IO.Directory.Получить файлы (путь к строке, поисковый шаблон строки, поисковая опция SearchOption) в ExtractMtagtoCSV.Program.Main() в C:tempExtractMtagtoCSV — v2 — testoverneteworkProgram.cs:строка 80
Содержимое «строки 80»:
string[] filePaths = Directory.GetFiles(@"W:\2020-08","*.mtag", SearchOption.AllDirectories);
Приложение, использующее гораздо меньше 1 ГБ, согласно Process Explorer от VSCode, NAS имеет 4 ГБ.
Кто-нибудь может помочь?
Комментарии:
1. Пожалуйста, вставьте сообщение об ошибке в свой вопрос в виде текста. Это помогает пользователям, которые используют функцию поиска похожих ошибок.
2. Теперь это там
3. Два дня назад вы добавили более подробную информацию о проблеме, но в качестве ответа. На этом сайте ответы предназначены для ответа на вопрос, а не для добавления дополнительных деталей. Поскольку это не-ответ был удален, я не уверен, видите ли вы комментарий, который я разместил на нем. Я повторяю суть этого комментария здесь: пожалуйста, отредактируйте вопрос, чтобы добавить больше деталей, или, при необходимости, задайте новый вопрос. Код, который вы показали в этом удаленном не-ответе, сильно отличается от кода в исходном вопросе, поэтому, возможно, это должен быть новый вопрос. Кроме того, вы говорите, что происходит сбой, но вы не указали, какая ошибка возникает.
Ответ №1:
Я подозреваю, что в этой общей папке просто слишком много файлов. Назначение
string[] filePaths = Directory.GetFiles(@"W:2020-08","*.mtag", SearchOption.AllDirectories);
находит все файлы во всех подкаталогах и сохраняет их имена в массив, как описано в документации GetFiles. На этой странице предлагается вместо этого использовать метод EnumerateFiles и не присваивать результаты массиву, а обрабатывать их с помощью итератора.
Комментарии:
1. Привет, такая же ошибка с методом EnumerateFiles
2. @UrPocok : Так что обновите вопрос или, возможно, напишите новый вопрос и покажите свой новый код.