直接贴代码了:

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks.Dataflow; namespace DataFlowSample
{
class Program
{
static void Main()
{
var target = SetupPipeline();
target.Post(@"D:\Source\BenchmarkAndSpanExample-master\BenchmarkAndSpanExample");
Console.ReadLine();
} public static IEnumerable<string> GetFileNames(string path)
{
foreach (var fileName in Directory.EnumerateFiles(path, "*.cs"))
{
yield return fileName;
}
} public static IEnumerable<string> LoadLines(IEnumerable<string> fileNames)
{
foreach (var fileName in fileNames)
{
using (FileStream stream = File.OpenRead(fileName))
{
var reader = new StreamReader(stream);
string line = null;
while ((line = reader.ReadLine()) != null)
{
//WriteLine($"LoadLines {line}");
yield return line;
}
}
}
} public static IEnumerable<string> GetWords(IEnumerable<string> lines)
{
foreach (var line in lines)
{
string[] words = line.Split(' ', ';', '(', ')', '{', '}', '.', ',');
foreach (var word in words)
{
if (!string.IsNullOrEmpty(word))
yield return word;
}
}
} public static ITargetBlock<string> SetupPipeline()
{
var fileNamesForPath = new TransformBlock<string, IEnumerable<string>>(
path => GetFileNames(path)); var lines = new TransformBlock<IEnumerable<string>, IEnumerable<string>>(
fileNames => LoadLines(fileNames)); var words = new TransformBlock<IEnumerable<string>, IEnumerable<string>>(
lines2 => GetWords(lines2)); var display = new ActionBlock<IEnumerable<string>>(
coll =>
{
foreach (var s in coll)
{
Console.WriteLine(s);
}
}); fileNamesForPath.LinkTo(lines);
lines.LinkTo(words);
words.LinkTo(display);
return fileNamesForPath;
}
}
}

谢谢浏览!

最新文章

  1. null、undefined、false、0相等性比较
  2. SQL初级
  3. golang 简易聊天
  4. CVE-2014-6271 Bash漏洞利用工具
  5. 【Visual Lisp】Visual Lisp属性与方法
  6. mysql5.5 uuid做主键与int做主键的性能实测
  7. 8.cadence.CIS[原创]
  8. C# 获取汉字的拼音首字母
  9. ***iOS 项目的目录结构能看出你的开发经验
  10. java后台获取国际化资源文件
  11. HTML5 调用手机相册和摄像头的方法并上传微信下测试通过
  12. 为什么需要DevOps
  13. git的入门使用操作
  14. Ajax跨域之ContentType为application/json请求失败的问题
  15. Nginx 针对上游服务器缓存
  16. Ubuntu16.04下修改MySQL数据的默认存储位置
  17. ArcGIS for JS 离线部署
  18. Javascript 中ajax实现前台向后台交互
  19. 12312312312312ssss
  20. 网站漏洞修复案例之Discuz!3.4最新版本

热门文章

  1. 小鸟初学Shell编程(二)编写简单的Shell脚本
  2. CSS自定义右键菜单
  3. maven 学习---Maven添加远程仓库
  4. Android 自定义水平进度条的圆角进度
  5. bat脚本输出日志
  6. Linux系统下安装jdk及环境配置(两种方法)
  7. 使用Lambda解决_inbound_nodes错误
  8. 在浏览器输入URL回车之后发生了什么?(超详细版)
  9. 201871010105-曹玉中《面向对象程序设计(java)》第八周学习总结
  10. JAVA并发-CountDownLatch