您的位置:首页 > Web前端

Buffer同步 ,并行读取流文件

2015-06-02 23:01 225 查看
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);  

            }

           

        }

       

     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并行读取流文件