.NET Framework 链接块以创建管道

示例

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; // 只需要等待管道中的最后一个块