C# 并行范围。Foreach MaxDegreeOfParallelism

C# 并行范围。Foreach MaxDegreeOfParallelism,c#,task-parallel-library,C#,Task Parallel Library,我使用Parallel.Foreach来处理多个并发任务。我通过指定MaxDegreeOfParallelism来限制并发操作的数量。所以现在,如果我在foreach之外启动另一个任务,会不会对该任务应用最大并发操作限制 Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=> {////Some OPeration///

我使用Parallel.Foreach来处理多个并发任务。我通过指定MaxDegreeOfParallelism来限制并发操作的数量。所以现在,如果我在foreach之外启动另一个任务,会不会对该任务应用最大并发操作限制

Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=>
                    {////Some OPeration///}


Task.Factory.StartNew(action)

如果最大限制为8,并且8个并发任务已经在Foreach中运行。Foreach之外的任务是否会运行?

否,应用于
并行。Foreach()
的选项仅影响
并行。Foreach()
,它们不会直接影响任何其他代码


(实际上,您越是限制
Parallel.ForEach()
,另一个
任务
就越有可能立即执行。这是因为您的
Parallel.ForEach()
将使用
ThreadPool
中更少的线程,让更多线程空闲给其他线程。)

在给定的示例中,任务将运行,因为在启动时,并行foreach已经完成,它的所有任务都完成了。我的意思是,如果一个单独的线程在foreach执行时尝试在foreach之外执行一个任务。那么我如何为所有任务设置线程池限制,无论是在parallel.foreach内部还是外部。?这可能不是一个好主意,但是你可以打电话来。什么是正确的解决方案取决于你为什么要这么做。