Directory.EnumerateDirectories()挂起在某些网络文件夹上

时间:2015-10-09 11:04:16

标签: c# windows-server

我有这个简单的C#代码:

foreach (string s in Directory.EnumerateDirectories(root))
{
    Console.WriteLine(s);
}

root是包含10520个文件和无子文件夹的网络共享(Windows)的字符串(UNC)。我希望Directory.EnumerateDirectories(root)返回一个空集合,但它会挂起。我等了几分钟。

DOS命令“dir”按预期工作,甚至Windows资源管理器中的“属性”在5秒内完成任务,报告“10 520个文件,0个文件夹”

我的猜测是文件服务器或计算机上存在一些限制。

1 个答案:

答案 0 :(得分:1)

问题很可能出在.net本身。有时(如果不总是)它比本机Windows API慢。

命令行和资源管理器正在使用WinAPI,这就是它们如此之快的原因。

幸运的是,有可能使用P / Invoke通过C#调用WinAPI。

有很多例子,例如this