Можно ли использовать поток данных TPL для распространения сообщения только при выполнении условия? - PullRequest
1 голос
/ 10 июля 2020
var ints = Enumerable.Range( 0, 10 ).ToList();
var source = new BufferBlock<int>();
var action = new ActionBlock<int>( async (i) => { Console.WriteLine( "Processing i" ); await Task.Delay(i*1000);}, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = -1 } );

Можно ли использовать поток данных TPL, чтобы ActionBlock извлекал только из буферного блока, если сумма всех обрабатываемых i <= 10. Таким образом, первый проход будет обрабатывать 1, 2, 3, 4; тогда 5 потянет, как только высвободится всего 5? </p>

...