NAS: System.IO.IOException: недостаточно системных ресурсов для завершения запрошенной службы

#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.FileSystemEnumerator 1.MoveNext() at System.Collections.Generic.LargeArrayBuilder 1.Добавьте диапазон (источник IEnumerable 1 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 : Так что обновите вопрос или, возможно, напишите новый вопрос и покажите свой новый код.