System.IO.DriveInfo.GetDrives() зависает при отключенных сетевых дисках

Я пишу файловый менеджер в.NET 3.5. При запуске приложение должно перечислить доступные диски. Я использую DriveInfo.GetDrives, чтобы сделать это.

К сожалению, мои пользователи посетовали, что, когда они отключили сетевые диски, запуск приложения занял около 30 секунд.

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

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

Дополнительная информация:

  1. Я провел некоторый тест с WMI, и та же проблема возникает. Запрос WMI возвращается через 15 секунд или около того.

  2. Я также рассмотрел возможность перемещения вызова в DriveInfo в отдельную ветку. Это решило бы проблему не блокирования пользовательского интерфейса; но это будет означать, что, когда пользователь присоединяет новый диск, значок диска появится только через 15 секунд. Это не идеально.

Большое спасибо за любую помощь.

1 ответ

Боюсь, что нет способа избежать блокировки. Это связано с таймаутами сети / файла в Windows API.

Другие вопросы по тегам