我有这个简单的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个文件夹”
我的猜测是文件服务器或计算机上存在一些限制。
答案 0 :(得分:1)
问题很可能出在.net本身。有时(如果不总是)它比本机Windows API慢。
命令行和资源管理器正在使用WinAPI,这就是它们如此之快的原因。
幸运的是,有可能使用P / Invoke通过C#调用WinAPI。
有很多例子,例如this。