我想遍历硬盘上的目录,并搜索所有文件以查找特定的搜索字符串。这听起来像是一个很适合并行处理的任务,因为IO速度相对较慢。
传统上,我会编写一个递归函数来查找和处理当前目录中的所有文件,然后递归到该目录中的所有目录中。我想知道如何修改这个函数以实现更好的并行处理。首先,我只是修改了:
但我觉得这样可能会创建太多的任务并陷入混乱,特别是当尝试将其调度回UI线程时。我还觉得任务数量是不可预测的,这可能不是并行化此任务的有效方式。
有人以前成功地做过这样的事吗?你在这样做时有什么建议?
传统上,我会编写一个递归函数来查找和处理当前目录中的所有文件,然后递归到该目录中的所有目录中。我想知道如何修改这个函数以实现更好的并行处理。首先,我只是修改了:
foreach (string directory in directories) { ... }
to
Parallel.ForEach(directories, (directory) => { ... })
但我觉得这样可能会创建太多的任务并陷入混乱,特别是当尝试将其调度回UI线程时。我还觉得任务数量是不可预测的,这可能不是并行化此任务的有效方式。
有人以前成功地做过这样的事吗?你在这样做时有什么建议?