我们有一些基本的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设置执行时间的方法