c#线程和foreach循环

本文关键字:循环 foreach 线程 | 更新日期: 2023-09-27 18:06:06

我有大量的记录需要循环对于粗略的数字,比如100,000条记录

当我循环遍历这些记录时,我需要做一些字符串操作并将该字符串保存到文本文件中。每条记录之间不共享数据,它们是独立的数据记录。

我想我可以通过使用多线程更快地完成这个任务?如果是这样,我将如何去做这个(与代码示例)?

我在想我不希望无限数量的线程同时运行,所以有没有办法启动有限数量的线程(一次10个线程),当我完成时启动另一个线程,直到所有100,000个线程完成?

c#线程和foreach循环

如果你使用的是。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个线程,库可以确定要创建的最佳线程数量,并尽可能地旋转。