При выполнении итерации через FileSystemInfo [] мое приложение C # падает без исключения - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть приложение, которое опрашивает каталог для вновь добавленных файлов и обрабатывает любые новые. Это приложение на C # (.NET 4), работающее в Windows 7, и каталог фактически является сетевым ресурсом.

Проблема заключается в том, что при выполнении итерации файлов для проверки их существования приложение иногда завершает работу без исключения. (Я использую try-catch, и там нет неуправляемого кода, кода делегирования или чего-то ненормального. Это простое приложение)

Код итерации выглядит так:

System.IO.DirectoryInfo dp = new System.IO.DirectoryInfo(destinationPath);
System.IO.FileSystemInfo[] destinationFiles = dp.GetFileSystemInfos();

foreach (FileSystemInfo fileSysInfo in destinationFiles)
{
  string filePath = fileSysInfo.FullName;
  if (filePath.EndsWith(FILE_VALID_EXT) && !Directory.Exists(filePath) && !File.Exists(filePath + FILE_PROCESSED_EXT))
  {
    // Do processing. It doesn't reach this point! I know because I have a logging statement.
  }
}

Сбой кода, поскольку удаленный каталог (временно) недоступен? Или потому что есть какая-то блокировка для файла или каталога?

Как мне этого избежать? Возможно, есть более безопасный способ использования API ввода-вывода в C # File.

Любые советы приветствуются!

1 Ответ

1 голос
/ 22 марта 2015

Обычно при сбое приложения .net из-за переполнения стека. Просто идея: проверьте, есть ли в структуре каталогов, которую вы перечисляете, символическая ссылка, вызывающая бесконечный цикл.

...