现在介绍管道的第一阶段。ReadFilenamesAsync 接收 BlockingCollection<T>为参数,在其中写入输出。该方法的实现使用枚举器来迭代指定目录及其子目录中的C# 文件。这些文件的文件名用 Add 方法添加到 BlockingCollection<T>中。完成添加文件名的操作后,调用 CompleteAdding 方法,以通知所有读取器不应再等待集合中的任何额外项:
public static class PipelineStages{public static Task ReadFilenamesAsync(string path,BlockingCollection<string> output){return Task.Factory.StartNew(() =>{foreach (string filename in Directory.EnumerateFiles(path,"*.cs",SearchOption.AllDirectories)){output.Add(filename);ColoredConsole.Wr

本文详细介绍了如何利用BlockingCollection在多线程环境中实现数据管道的两个阶段:ReadFilenamesAsync读取C#文件名并添加到集合,LoadContentAsync则读取文件内容并写入另一个集合。强调了在读写操作同时进行时,使用GetConsumingEnumerable的必要性以确保完整遍历集合。
最低0.47元/天 解锁文章
1532

被折叠的 条评论
为什么被折叠?



