如何:检查不可用networking共享时防止超时 – C#

我们有一些基本的C#逻辑遍历一个目录并返回其中的文件夹和文件。 当针对无法访问或无效的networking共享(\\ server \ share \文件夹)运行时,代码在从呼叫返回之前似乎“挂起”约30秒。

我想最终将尝试从给定的path获取文件夹和文件,但没有超时期限的方法。 换句话说,完全减less或消除超时。

我已经尝试了一些简单的事情,比如提前确认目录的存在,认为一个“不可用的”networking驱动器会很快返回错误,但是这并不像预期的那样工作。

System.IO.Directory.Exists(path) //hangs System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); //hangs 

有什么build议可以帮助我实现一个高效(希望得到pipe理)的解决scheme?

把它放在自己的线程上,如果它没有在一定的时间内回来,继续前进。

你可以使用这个代码:

 var task = new Task<bool>(() => { var fi = new FileInfo(uri.LocalPath); return fi.Exists; }); task.Start(); return task.Wait(100) && task.Result; 

也许你可以先尝试ping服务器,只有在获得响应时才询问目录信息。

看到…

更快的DirectoryExists功能?

…为Directory.Exists设置执行时间的方法