TPL默认构造函数BufferBlock:DataFlowBlockOptions的值

3
如果您使用默认构造函数来构造TPL BufferBlock,则DataFlowBlockOptions是否无限制?换句话说,BufferBlock的BoundedCapacity是多少?
正如此SO答案中所述,在构建后无法查询或更改BufferBlock的值。

3
是的,默认值为“Unbounded”。您可以在此处查看所有默认值(https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlockOptions.cs)。 - JSteward
1个回答

2
您有两个选项可以找到这个答案:阅读文档或者自己创建BufferBlock

来自Introduction to TPL Dataflow:

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

这是块可以存储和在任何时候处理的项目数量的限制。默认情况下,此值初始化为DataflowBlockOptions.Unbounded(-1),意味着没有限制。

但是,开发人员可能会明确指定上限。如果块已经达到容量并且要提供额外的消息,则该消息将被推迟。

另外,来自MSDN:

DataflowBlockOptions是可变的,并且可以通过其属性进行配置。
当未设置特定配置选项时,将使用以下默认值:

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

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

from debugger

您还可以尝试通过反射来获取/设置它们,但这真的不推荐。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接