如果您使用默认构造函数来构造TPL BufferBlock,则DataFlowBlockOptions是否无限制?换句话说,BufferBlock的BoundedCapacity是多少?
正如此SO答案中所述,在构建后无法查询或更改BufferBlock的值。
正如此SO答案中所述,在构建后无法查询或更改BufferBlock的值。
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
实例的后续更改不应影响数据流块的行为。
您可以始终从调试器中查看私有成员:
您还可以尝试通过反射来获取/设置它们,但这真的不推荐。