Да, вы можете сделать это довольно элегантно, связав вместе блоки.В этом случае вы хотите установить TransformBlock, который вы связываете «до» BatchBlock.Это будет выглядеть примерно так:
Timer triggerBatchTimer = new Timer(() => yourBatchBlock.TriggerBatch());
TransformBlock<T, T> timeoutTransformBlock = new TransformBlock<T, T>((value) =>
{
triggerBatchTimer.Change(5000, Timeout.Infinite);
return value;
});
timeoutTransformBlock.LinkTo(yourBatchBlock);
yourBufferBlock.LinkTo(timeoutTransformBlock);