System.IO.DriveInfo.GetDrives() зависает при отключенных сетевых дисках
Я пишу файловый менеджер в.NET 3.5. При запуске приложение должно перечислить доступные диски. Я использую DriveInfo.GetDrives, чтобы сделать это.
К сожалению, мои пользователи посетовали, что, когда они отключили сетевые диски, запуск приложения занял около 30 секунд.
Я обнаружил, что функция GetDrives() зависает на много секунд, когда у вас отключен сетевой диск. И пользовательский интерфейс зависает. Это происходит при запуске, и каждый раз, когда я присоединяю новый диск.
Подводя итог, мне нужен способ перечисления доступных дисков, который немедленно возвращается, даже если есть отключенные сетевые диски. Спасибо за любую помощь.
Дополнительная информация:
Я провел некоторый тест с WMI, и та же проблема возникает. Запрос WMI возвращается через 15 секунд или около того.
Я также рассмотрел возможность перемещения вызова в DriveInfo в отдельную ветку. Это решило бы проблему не блокирования пользовательского интерфейса; но это будет означать, что, когда пользователь присоединяет новый диск, значок диска появится только через 15 секунд. Это не идеально.
Большое спасибо за любую помощь.
1 ответ
Боюсь, что нет способа избежать блокировки. Это связано с таймаутами сети / файла в Windows API.