vs2012安装NuGet, 查找Microsoft TPL Dataflow安装.
引入命名空间using System.Threading.Tasks.Dataflow;
使用这个工具包,可以实现并行读取流文件。
class Program
{
static BufferBlock<string> buffer=new BufferBlock<string>();//声明一个缓冲块.
static void Main()
{
var T1 = Task.Run(() => producer());
var T2 = Task.Run(() => receiver());
Task.WaitAll(T1, T2);
}
/// <summary>
/// 数据供应者
/// </summary>
static void producer()
{
bool exit = false;
while (!exit)
{
string line = Console.ReadLine();
if (string.Compare(line, "exit", ignoreCase:true) == 0)//注意这里是:号
{
exit = true;
}
else
{
Console.WriteLine("当前线程是:{0},写入的值是:{1}", Task.CurrentId, line);
buffer.Post(line);
}
}
}
/// <summary>
/// 接收者
/// </summary>
static async void receiver()//注意这里的async关键字
{
while (true)//注意这里的while,是让线程持续运行
{
string r = await buffer.ReceiveAsync();
Console.WriteLine("当前线程是:{0},获取的值是:{1}", Task.CurrentId, r);
}
}
}