Как я могу гарантировать, что fopen () не будет блокироваться, если он не подключен к сети? - PullRequest
1 голос
/ 23 сентября 2008

Мое приложение win32 C ++ часто проверяет файл, который обычно находится в сетевой папке [в нашей корпоративной сети]. Но если компьютер не подключен к сети, приложение зависает на несколько минут, и пользователь обычно должен завершить процесс. Как я могу проверить, доступен ли файл, прежде чем открыть его?

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

Ответы [ 3 ]

2 голосов
/ 23 сентября 2008

Я думаю, что нить - ваш лучший вариант.

Похоже, нет способа вызвать API-интерфейс CreateFile асинхронно. Как только дескриптор файла открыт, вы можете выполнять на нем асинхронный ввод-вывод, но процесс его открытия по-прежнему является синхронным.

Вам придется самостоятельно управлять синхронизацией с потоком, поскольку только ваше приложение знает, когда ему нужен результат fopen, и в этот момент оно может блокироваться.

2 голосов
/ 23 сентября 2008

Поместить доступ к файлу в отдельный поток?

1 голос
/ 23 сентября 2008

Мне кажется, этот метод в отдельной ветке будет лучшим выбором.

File.Exists

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