TPL默认构造函数BufferBlock:DataFlowBlockOptions

时间:2017-05-18 09:04:06

标签: task-parallel-library producer-consumer tpl-dataflow

如果使用默认构造函数构造TPL BufferBlockDataFlowBlockOptions是否无界限?换句话说,BoundedCapacity的{​​{1}}是什么?

As stated in this SO answer,构建后无法查询或更改BufferBlock的值。

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式找到答案:阅读docs或自己创建BufferBlock

来自Introduction to TPL Dataflow

  

System.Threading.Tasks.Dataflow.dll中包含的大多数数据流块都支持有界容量的规范。

     

这是块可能存储并且在任何时间都在飞行中的项目数量的限制。默认情况下,此值初始化为DataflowBlockOptions.Unbounded-1),这意味着没有限制。

     

但是,开发人员可以明确指定上限。如果一个块在提供附加消息时已经达到其容量,则该消息将被推迟。

此外,来自MSDN

  

DataflowBlockOptions是可变的,可以通过其属性进行配置   如果未设置特定配置选项,则使用以下默认值:

           

数据流块捕获其构造中的选项状态   对提供的 DataflowBlockOptions 实例的后续更改不应影响数据流阻止的行为。

您始终可以从调试器中查看私有成员:

from debugger

您也可以尝试通过反射获取/设置它们,但实际上不建议这样做。