Конструктор по умолчанию TPL BufferBlock: значение DataFlowBlockOptions
Если вы используете конструктор по умолчанию для создания TPL BufferBlock
являются DataFlowBlockOptions
неограничен? Другими словами, что такое BoundedCapacity
из BufferBlock
?
Как указано в этом ответе SO, невозможно ни запросить, ни изменить значения BufferBlock
после строительства.
1 ответ
У вас есть два варианта, чтобы это выяснить: прочитать документы или создать 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
Экземпляр не должен влиять на поведение блока потока данных.
Вы всегда можете просмотреть приватных участников из отладчика:
Вы также можете попытаться получить / установить их отражением, но это действительно не рекомендуется.