我正在.NET 3.5中编写文件管理器。启动时,应用程序必须枚举可用的驱动器。我正在使用DriveInfo.GetDrives来做到这一点。
不幸的是,我的用户感到遗憾的是,当他们断开网络驱动器时,应用程序大约需要30秒才能启动。
我发现当你有一个断开的网络驱动器时,GetDrives()函数会挂起很多秒。用户界面冻结了。这在启动时发生,每次我连接一个新驱动器。
总而言之,我需要一种方法来枚举可立即返回的可用驱动器,即使网络驱动器已断开连接。谢谢你的帮助。
其他信息:
我用WMI做了一些测试,出现了同样的问题。 WMI查询在15秒左右后返回。
我还考虑将对DriveInfo的调用移到单独的线程中。这样可以解决不阻塞用户界面的问题;但这意味着,当用户连接新驱动器时,驱动器图标只会在15秒后出现。那不太理想。
非常感谢您的帮助。
答案 0 :(得分:0)
我担心没有办法避免阻塞。这是由于Windows API中的网络/文件超时。