【发布时间】:2014-04-30 19:02:51
【问题描述】:
我正在制作一个在目录中查找重复文件的程序,但是当它正在搜索的目录中有太多这些文件时,它会使应用程序崩溃。 我想知道是否有办法缓冲它抓取的文件数量。 这是执行我正在解释的事情的代码:
string[] filePathsb = Directory.GetFiles(
@"" + Dirfind, "*" + filetyperest, SearchOption.AllDirectories);
for (int i = 0; i < filePathsb.Length; i++)
{
ListBoxItem itm = new ListBoxItem();
try
{
List<TodoItem> items = new List<TodoItem>();
filelistboxitem.Items.Add(new TodoItem() { Title = "" + filePathsb[i], Deletea = "" + i });
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("Error occurance: " + ex);
}
}
请注意:当有大约
【问题讨论】:
-
定义“使应用程序崩溃”。向列表框中添加 50 个甚至 200 个项目应该不会导致问题。将数千个项目添加到列表框可能是一个问题(除了糟糕的用户体验之外)。您是否遇到异常(详细信息?),程序是否锁定,或者究竟是什么?
-
当我这样做时,我认为它不会发生任何异常:'string[] filePathsb = Directory.GetFiles(@"" + Dirfind, "*" + filetyperest, SearchOption.所有目录);'
-
所以当我运行函数时崩溃只会让窗口冻结
-
我同意埃里克的观点...请描述“崩溃”的发生情况。我构建了自己的 FileSync C# 应用程序,我曾经针对一个包含 7000 个文件的目录运行它,并且它没有崩溃任何东西。现在它确实冻结了应用程序,直到所有文件都被读取,所以我切换到线程以保持 UI 响应......
-
我已根据您的 cmets 更新了您的帖子标题 - 请验证 changte 是否准确/更新。请不要将“崩溃”用作“不更新 UI/冻结” - 对于大多数读者来说,“崩溃”意味着“抛出未处理的异常”。