使用 System.IO.Directory.GetFiles() 计算文件的性能问题
我在 C# 程序中使用
System.IO.Directory.GetFiles(dirname, "*.*", System.IO.SearchOption.AllDirectories).Length;
来计算目录中的文件数(及其子目录)在共享上。我在循环中对许多目录执行此操作。 现在的问题是,在调用 GetFiles(...).Length
20-30 次之后,我的程序突然冻结或变得非常慢。 这可能是什么原因以及如何解决这个问题!有解决方法吗?
I use in a C# program
System.IO.Directory.GetFiles(dirname, "*.*", System.IO.SearchOption.AllDirectories).Length;
to count to number of files in a directory(and its subdirectories) on a share. I do this for many directories within a loop.
The problem is now, that after 20-30 calls of GetFiles(...).Length
my program is suddenly frozen or becomes very slow.
What could be the reason for that and how can this problem be solved! Are there workarounds?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看 http://www.codeproject.com/KB/files/FastDirectoryEnumerator.aspx 。
也许这篇文章会对你有所帮助。
Take a look at http://www.codeproject.com/KB/files/FastDirectoryEnumerator.aspx.
Mybe this article will help you.
您确定您没有以某种方式存储先前调用的结果,从而导致您的应用程序内存匮乏吗?在任务管理器的进程选项卡中检查应用程序的内存分配。
Are you sure you aren't somehow storing the results of previous calls making your application starve on memory? Check the memory allocation for your application in processes tab of Task Manager.