System.IO.DriveInfo.GetDrives () зависает при отключенных сетевых дисках - PullRequest
2 голосов
/ 23 октября 2009

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 23 октября 2009

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

...