2013-03-29 34 views
4

我正在列出Nas share中的一些文件夹,获取文件夹属性和列表子文件夹。 为在那里我没有访问权限的文件夹,我得到两个不同的异常UnauthorizedAccessException vs IOException

  1. System.UnauthorizedAccessException:访问路径“Z:\信息”被拒绝。
  2. System.IO.IOException:未找到网络路径。

第二个需要很长时间才能赶上这将会减慢应用

我的问题是,为什么一些股票我得到的网络路径没有被发现和其他人的访问被拒绝? 有什么不同?以及如何避免需要时间的第二个异常。

回答

3

我的问题是为什么一些股票我没有找到网络路径,其他人的访问被拒绝?有什么不同?

如果找到的路径很快,但您没有权限,您将很快收到UnauthorizedAccessException

但是,如果系统试图发现网络共享是否有效,则可能需要一段时间。在确定网络路径完全无效之前,它需要做相当多的网络访问,这可能需要一段时间。

以及如何避免需要时间的第二个异常。

这样做的唯一方法是不访问不存在的共享。这并不总是实用 - 如果您需要在运行时确定它们是否存在,那么您只需要设计一个事实,即这可能会很慢。

但是有很多方法可以改善这种情况 - 如果您正在检查多个共享,您可以并行执行这些检查。考虑到这实际上是IO的限制,线程可能会对应用程序的整体响应性产生巨大影响,因为您可以同时检查所有的共享,而不是按顺序检查。

+0

股份应该存在,因为我做Directory.GetDirectories(根)然后我循环通过结果,如果共享不存在,那么它不应该列出。 – Maro

+0

@Maro“永久”映射驱动器可能仍“存在”但不可用。在您尝试访问驱动器之前,操作系统实际上并没有连接到它们,这可能需要一段时间。 –

+0

@Maro这是一个加速启动时间等事情的优化。 –

相关问题