当我创建数据流块时,我指定它的.MaxDegreeOfParallelerism如下:
...New ExecutionDataflowBlockOptions With
{.MaxDegreeOfParallelism = System.Environment.ProcessorCount - 1}...
以后有什么方法可以改变吗?
答案 0 :(得分:5)
不,你不能这样做。
您可以做的是使用足够高的MDOP(可能是Unbounded
)创建块,并使用SemaphoreSlim
将并行度限制为您实际需要的值。
然后,当您想要更改并行度时,请在循环中调用Release(int releaseCount)
(增加它)或await WaitAsync()
(以减少它)。
答案 1 :(得分:2)
没有。使用相同的块时,您无法更改度数。
但是,您可以从一开始就将其设置为更高的数字,并且只会根据需要使用它(因此Max
)。
或者您可以创建一个更高MaxDegreeOfParallelism
的新块,并在等待旧块完成时开始向其发布项目。