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

Directory.EnumerateDirectories() hang on some network folders

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

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

root 是网络共享 (Windows) 的字符串 (UNC),其中包含 10520 个文件并且 没有子文件夹 。我希望 Directory.EnumerateDirectories(root) 到 return 是一个空集合,但它挂起了。我等了几分钟。

DOS 命令 "dir" 按预期工作,甚至 "Properties" 在 Windows Explorer 中也能在 5 秒内完成任务,报告“10 520 个文件,0 个文件夹”

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

问题很可能与 .net 本身有关。有时(如果不是总是)它比原生 Windows API.

命令行和资源管理器与 Win 一起工作API 这就是它们速度如此之快的原因。

幸运的是,可以使用 P/Invoke.

通过 C# 调用 WinAPI

有很多例子,比如this