如何在.NET中设置使用线程池并发运行的最大线程数

如何在.NET中设置使用线程池并发运行的最大线程数,.net,queue,threadpool,.net,Queue,Threadpool,我需要并行执行固定数量的线程,比如说5个,并将所有剩余的线程排队。这是我试过的一段代码 ThreadPool.SetMaxThreads(5, 0); ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1); Thread.Sleep(1000);//'ThreadProc' is the callback function 现在,当我尝试运行时,假设并行运行7个线程,那么它将同时运行所有线程

我需要并行执行固定数量的线程,比如说5个,并将所有剩余的线程排队。这是我试过的一段代码

ThreadPool.SetMaxThreads(5, 0);

ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1);
            Thread.Sleep(1000);//'ThreadProc' is the callback function

现在,当我尝试运行时,假设并行运行7个线程,那么它将同时运行所有线程,而不是运行5个线程并排队等待下2个线程。如何实现这一点?

如果您可以使用并行For/ForEach,那么您就有了
并行选项。MaxDegreeOfParallelism
,它将限制并发操作的数量。

您可以给出一个关于线程池代码的示例代码吗?您不再需要
线程池
代码,使用
Parallel
可以在多个线程上处理内容,区别在于
ForEach
QueueUserWorkItem
相比是阻塞的,这就是为什么我问你是否可以使用它。