如果使用默认构造函数构造TPL BufferBlock
,DataFlowBlockOptions
是否无界限?换句话说,BoundedCapacity
的{{1}}是什么?
As stated in this SO answer,构建后无法查询或更改BufferBlock
的值。
答案 0 :(得分:1)
您可以通过两种方式找到答案:阅读docs或自己创建BufferBlock
。
来自Introduction to TPL Dataflow
:
System.Threading.Tasks.Dataflow.dll
中包含的大多数数据流块都支持有界容量的规范。这是块可能存储并且在任何时间都在飞行中的项目数量的限制。默认情况下,此值初始化为
DataflowBlockOptions.Unbounded
(-1
),这意味着没有限制。但是,开发人员可以明确指定上限。如果一个块在提供附加消息时已经达到其容量,则该消息将被推迟。
此外,来自MSDN:
DataflowBlockOptions
是可变的,可以通过其属性进行配置 如果未设置特定配置选项,则使用以下默认值:
TaskScheduler
:TaskScheduler.Default
MaxMessagesPerTask
:DataflowBlockOptions.Unbounded
(-1
)CancellationToken
:CancellationToken.None
BoundedCapacity
:DataflowBlockOptions.Unbounded
(-1
)数据流块捕获其构造中的选项状态 对提供的
DataflowBlockOptions
实例的后续更改不应影响数据流阻止的行为。
您始终可以从调试器中查看私有成员:
您也可以尝试通过反射获取/设置它们,但实际上不建议这样做。