我试图简化问题如下,
现在我的问题是我想确保一次只产生5个线程,因为开始100 +线程根本不是好主意.
所以请告诉我应该使用什么方法来确保只有5个线程正在工作,只要其中一个线程完成,就可以启动新线程.
谢谢大家,
我投票支持任务并行库 / 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 个线程,但我发现它使用的线程较少。