, , TPL Dataflow library, TPL ( nuget.NET 4.5 ), ( BroadcastBlock):
var buffer = new BroadcastBlock<string>();
var consumer1 = new TransformBlock<string, string>(s => { });
var consumer2 = new TransformBlock<string, string>(s => { });
var resultsProcessor = new ActionBlock<string>(s => { });
, , . ( Post , , ) , :
buffer.LinkTo(consumer1, new DataflowLinkOptions { PropagateCompletion = true });
buffer.LinkTo(consumer2, new DataflowLinkOptions { PropagateCompletion = true });
consumer1.LinkTo(resultsProcessor, new DataflowLinkOptions { PropagateCompletion = true });
consumer2.LinkTo(resultsProcessor, new DataflowLinkOptions { PropagateCompletion = true });
foreach (var s in IncomingData)
{
await buffer.SendAsync(s);
}
buffer.Complete();
all, BroadcastBlock ( ), - ( , ), , "" , - " t .
, , .Completion resultsProcessor:
resultsProcessor.Completion.ContinueWith(t => { });