... и подействует ли это?
Я бы хотел отложить настройку свойства ExecutionDataflowBlockOptions.SingleProducerConstrained до тех пор, пока я не буду готов связать сеть вместе. (Потому что я хочу отделить создание блоков с их семантикой от соединения сети вместе с ее семантикой.)
Но, насколько я могу судить, вы можете установить ExecutionDataflowBlockOptions только при создании блока (например, для TransformBlock, TransformManyBlock и т. д. вы передаете его конструктору, и в противном случае он не отображается).
Однако... от меня не ускользнуло, что у свойств есть общедоступные сеттеры. Итак... могу ли я создать блок с экземпляром-заполнителем ExecutionDataflowBlockOptions и удерживать его, чтобы я мог позже установить SingleProducerConstrained=true, если захочу, при связывании блоков вместе (и что это вступит в силу)?
(Кстати, есть ли способ узнать, оказывает ли SingleProducerConstrained какое-либо влияние, кроме измерения пропускной способности?)
Обновление: @i3amon правильно указал в своем ответе, что это невозможно сделать, потому что блоки потока данных клонируют DataflowBlockOptions
, который вы передаете, и используете его. Но я все равно сделал это, используя внутренние структуры данных, к которым я могу получить доступ через отражение и динамику. Я положил это в ответ ниже.