Конструктор по умолчанию 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 Экземпляр не должен влиять на поведение блока потока данных.

Вы всегда можете просмотреть приватных участников из отладчика:

от отладчика

Вы также можете попытаться получить / установить их отражением, но это действительно не рекомендуется.

Другие вопросы по тегам