System.IO.DriveInfo.GetDrives()与断开连接的网络驱动器挂起

时间:2009-10-23 09:47:31

标签: .net networking drives driveinfo

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

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

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

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

其他信息:

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

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

  3. 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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