Более быстрая функция DirectoryExists?

В главном правом углу проблемного окна (рядом с минимизируют) существует маленький значок стрелки. Нажмите это и выбор "Настраивает фильтры". Существует фильтр серьезности, который, возможно, был активирован.

15
задан Uli Gerhardt 18 September 2009 в 09:24
поделиться

6 ответов

Нет более быстрого способа:

любая функция, обращающаяся к чему-либо на удаленном общем ресурсе, будет отключена по тайм-ауту, когда этот общий ресурс недоступен.

Если причиной тайм-аутов является автоматическое отключение общих ресурсов , то эта ссылка может вам помочь:

Если приложение может продолжить работу без завершения проверки, вы можете поместите проверку в отдельный поток, и по завершении проверки вы сможете обновить свой статус в пользовательском интерфейсе.

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

19
ответ дан 1 December 2019 в 01:11
поделиться

Тот же вопрос был для C #: Как избежать остановки сети в GetFileAttributes?

Как сказал codymanix, используйте потоки. Приведенная выше ссылка покажет вам, как это можно сделать с делегатами на C #. Не знаю Delphi, но, может быть, вы знаете, как преобразовать код?

6
ответ дан 1 December 2019 в 01:11
поделиться

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

5
ответ дан 1 December 2019 в 01:11
поделиться

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

Кроме того, на некоторых машинах, если путь UNC находится на локальном компьютере, а на локальном компьютере нет активной сетевой карты (ноутбук с отключенным Wi-Fi, например, в режиме «В самолете»), то запросы UNC также будут потерпеть неудачу.

3
ответ дан 1 December 2019 в 01:11
поделиться

В подобной ситуации, как вы указали, я сначала добавил на сервер пинг ICMP. Если сервер не отвечает на пинг, я предполагаю, что он не работает. Вы сами можете решить, какой тайм-аут использовать для проверки связи, поэтому вы можете установить его намного короче, чем тайм-аут, используемый внутри при попытке открыть файловый ресурс.

2
ответ дан 1 December 2019 в 01:11
поделиться

Если оба компьютера находятся в одном домене, это ускорит файловые операции при работе с общими ресурсами.

0
ответ дан 1 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: