DirectoryNotFoundException после Directory.Exists - PullRequest
0 голосов
/ 11 октября 2018

Как может следующий оператор:

if (Directory.Exists(outputDestination) 
    && new DirectoryInfo(outputDestination).GetFiles().Count() > 0)

throw DirectoryNotFoundException: Не удалось найти часть пути, если я проверяю, что каталог существует до вызова GetFiles ()

1 Ответ

0 голосов
/ 11 октября 2018

Как может следующий оператор:

if (Directory.Exists(outputDestination) 
   && new DirectoryInfo(outputDestination).GetFiles().Count() > 0)

выбросить исключение DirectoryNotFoundException?

Ваш код может выдать DirectoryNotFoundException, потому что вы создали ошибка TOCTOU :

При разработке программного обеспечения время проверки на время использования (TOCTTOU или TOCTOU, произносится как "tock too") - это класс программных ошибоквызванные изменениями в системе между проверкой условия (например, учетными данными безопасности) и использованием результатов этой проверки.Это один из примеров состояния гонки.

То, что каталог существует для вызова Directory.Exists(), не означает, что он все еще существует для вызова DirectoryInfo().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...