使用 System.IO.Directory.GetFiles() 计算文件的性能问题

发布于 2024-11-25 04:35:54 字数 276 浏览 1 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

但可醉心 2024-12-02 04:35:54

看看 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.

白芷 2024-12-02 04:35:54

您确定您没有以某种方式存储先前调用的结果,从而导致您的应用程序内存匮乏吗?在任务管理器的进程选项卡中检查应用程序的内存分配。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文