示例
var httpClient = new HttpClient();
// 创建一个接受uri的块并以字符串形式返回其内容
var downloaderBlock = new TransformBlock<string, string>(
async uri => await httpClient.GetStringAsync(uri));
// 创建一个接受内容的块并将其打印到控制台
var printerBlock = new ActionBlock<string>(
contents => Console.WriteLine(contents));
// 使downloaderBlock完成后,完成printerBlock。
var dataflowLinkOptions = new DataflowLinkOptions {PropagateCompletion = true};
// 链接块以创建管道
downloaderBlock.LinkTo(printerBlock, dataflowLinkOptions);
// 将网址发布到第一块,然后将其内容传递到第二块。
downloaderBlock.Post("http://youtube.com");
downloaderBlock.Post("http://github.com");
downloaderBlock.Post("http://twitter.com");
downloaderBlock.Complete(); // 完成将传播到printerBlock
await printerBlock.Completion; // 只需要等待管道中的最后一个块