2012-02-23 16 views

risposta

12

Sì, è possibile eseguire questo piuttosto elegantemente concatenando i blocchi. In questo caso si desidera configurare un TransformBlock che colleghi "prima" a BatchBlock. Sarebbe simile a questa:

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);