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。
我有这个简单的 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。