C#线程问题

Ani*_*mde 5 c# multithreading

我试图简化问题如下,

  1. 我有大约100多个文件,我想阅读,然后处理数据
  2. 为此我维护文件名和位置的数组
  3. 我产生线程来完成读取文件的工作.

现在我的问题是我想确保一次只产生5个线程,因为开始100 +线程根本不是好主意.

所以请告诉我应该使用什么方法来确保只有5个线程正在工作,只要其中一个线程完成,就可以启动新线程.

谢谢大家,

lig*_*gos 4

我投票支持任务并行库 / Rx(包含在 .NET 4.0 中,但可下载 3.5):

        var options = new ParallelOptions();
        options.MaxDegreeOfParallelism = 5;

        Parallel.ForEach(GetListOFiles(), options, (file) =>
        {
             DoStuffWithFile(file);
        });
Run Code Online (Sandbox Code Playgroud)

请注意,这将使用最多 5 个线程,但我发现它使用的线程较少。