如何:检查不可用的网络共享时防止超时 - C#

15 c# windows filesystems networking

我们有一些基本的C#逻辑,它遍历目录并返回其中的文件夹和文件.当针对无法访问或无效的网络共享(\\ server\share\folder)运行时,代码似乎在从调用返回之前"挂起"大约30秒.

我想最终得到一个方法,它将尝试从给定路径获取文件夹和文件,但没有超时期限.换句话说,完全减少或消除超时.

我已经尝试过一些简单的事情,就像提前验证目录的存在一样简单,认为"不可用"的网络驱动器会很快返回false,但是没有按预期工作.

System.IO.Directory.Exists(path) //hangs 

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); //hangs
Run Code Online (Sandbox Code Playgroud)

关于什么可以帮助我实现有效(并且希望管理)的解决方案的任何建议?

Jon*_*INE 22

您可以使用此代码:

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

return task.Wait(100) && task.Result;
Run Code Online (Sandbox Code Playgroud)

  • 我来自+1,这对于文件非常有用,但使用它来回答原始问题是没用的.要回答这个问题,尝试用`new DirectoryInfo(strPath)`替换`new FileInfo(uri.LocalPath)`来检查目录而不是文件. (4认同)
  • ***这应该是答案***OP pls chng (2认同)

Al *_*azi 7

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