using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
public static class Program
public static async Task Main()
var block2 = new ActionBlock<string[]>(parts =>
string completeMessage = String.Join(" ", parts);
Console.WriteLine($"Processing message: {completeMessage}");
var parts = new List<string>();
var block1 = new ActionBlock<string>(rawMessage =>
if (rawMessage is null) { block2.Complete(); return; }
if (rawMessage.EndsWith("."))
block2.Post(parts.ToArray());
block1.Post("The quick");
block1.Post("brown fox.");
Console.WriteLine("Processing terminated");