2

我正在.NET 3.5 中编写文件管理器。在启动时,应用程序必须枚举可用的驱动器。我正在使用 DriveInfo.GetDrives 来做到这一点。

不幸的是,我的用户感叹,当他们断开网络驱动器时,应用程序需要大约 30 秒才能启动。

我发现当您的网络驱动器断开连接时,GetDrives() 函数会挂起数秒。用户界面冻结。这发生在启动时,每次我连接一个新驱动器时。

总而言之,我需要一种方法来枚举立即返回的可用驱动器,即使有断开的网络驱动器。谢谢你的帮助。

附加信息:

  1. 我用 WMI 做了一些测试,同样的问题出现了。WMI 查询在 15 秒左右后返回。

  2. 我还考虑过将对 DriveInfo 的调用移至单独的线程。这将解决不阻塞用户界面的问题;但这意味着,当用户连接新驱动器时,驱动器图标只会在 15 秒后出现。那并不理想。

非常感谢您的帮助。

4

1 回答 1

0

我担心没有办法避免阻塞。这是由于 Windows API 中的网络/文件超时。

于 2009-10-23T09:56:29.910 回答