我需要循环播放大量记录 对于粗略的数字,可以说100,000条记录
当我遍历这些记录时,我需要进行一些字符串操作并将该字符串保存到文本文件中。每条记录之间不共享数据,它们是数据的独立记录。
我想我可以通过使用多个线程更快地完成这项任务? 如果是这样我将如何进行此操作(使用代码示例)?
我在想我不希望同时运行无限数量的线程,所以有没有办法启动有限数量的线程(一次说10个线程),当1完成时再启动另一个线程直到全部100,000完成了?
答案 0 :(得分:4)
如果您使用的是.Net 4或更高版本,则可以使用并行任务库。只需包含LINQ的using语句
using System.Linq;
using System.IO;
然后对每个使用并行。
Parallel.ForEach(this.CollectionOfStrings, str =>
{
// Append to file, or write to a new file if you are not appending
using (StreamWriter file = new StreamWriter(Path.Combine(somePath, str, ".txt")))
{
file.WriteLine(str);
}
});
它会并行写入每一行。如果你有100,000行,它将不会创建100,000个线程,库可以确定要创建的最佳线程数并尽可能地旋转它。