デフォルトのコンストラクタを使用してTPL BufferBlock
を構築する場合、DataFlowBlockOptions
は無制限ですか?つまり、BufferBlock
のBoundedCapacity
は何ですか?TPLのデフォルトのコンストラクタBufferBlock:DataFlowBlockOptionsの値
As stated in this SO answerの場合、建設後にBufferBlock
の値を照会も変更もできません。
デフォルトのコンストラクタを使用してTPL BufferBlock
を構築する場合、DataFlowBlockOptions
は無制限ですか?つまり、BufferBlock
のBoundedCapacity
は何ですか?TPLのデフォルトのコンストラクタBufferBlock:DataFlowBlockOptionsの値
As stated in this SO answerの場合、建設後にBufferBlock
の値を照会も変更もできません。
これを見つけるには2通りの方法があります。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
インスタンスは、データフローブロックの動作に影響を与えてはなりません。あなたは常に、デバッガからプライベートメンバー閲覧でき
:
をまた取得/反射によってそれらを設定しようとするかもしれませんが、これは本当にお勧めではありません。
はいデフォルトは「無制限」です。すべてのデフォルト値[ここ]を見ることができます(https://github.com/dotnet/corefx/blob/master/src/System.Threading.Tasks.Dataflow/src/Base/DataflowBlockOptions.cs) – JSteward