UnauthorizedAccessException与IOException

时间:2013-03-29 15:04:54

标签: c# .net-3.5

我列出了来自Nas共享的一些文件夹,获取文件夹属性和列出子文件夹。 对于我没有访问权限的文件夹,我得到两个不同的例外

  1. System.UnauthorizedAccessException:拒绝访问路径'Z:\ info'。
  2. System.IO.IOException:找不到网络路径。
  3. 第二个需要很长时间才能被捕获,这会降低应用程序的速度

    我的问题是为什么对于某些共享我没有找到网络路径而其他人拒绝访问? 有什么不同?如何避免需要时间的第二个例外。

1 个答案:

答案 0 :(得分:4)

  

我的问题是为什么对于某些共享我没有找到网络路径而其他人拒绝访问?有什么不同?

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

但是,如果系统尝试发现网络共享是否有效,则可能需要一段时间。在确定网络路径根本无效之前,需要进行相当多的网络访问,这可能需要一些时间。

  

如何避免需要时间的第二个例外。

唯一真正的方法是不访问不存在的共享。这并不总是实用的 - 如果你需要在运行时确定它们是否存在,你只需要设计一下这可能很慢的事实。

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