30.7 并发集合类

    class Program
    {
        static void Main()
        {
            var b1 = new BlockingCollection<int>();
            ThreadPool.QueueUserWorkItem(ConSumeItems, b1);
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("producing: " + i);
                b1.Add(i);
            }
            //告诉消费线程(可能有多个这样的线程),不会再集合中添加更多的项了
            b1.CompleteAdding();

            Console.ReadKey();
        }
        private static void ConSumeItems(object o)
        {
            var b1 = (BlockingCollection<int>)o;
            //阻塞,直到出现一个数据项。出现后就处理它
            foreach (var item in b1.GetConsumingEnumerable())
            {
                Console.WriteLine("consuming :{0}", item);
            }

            //集合空白,没有更多的项进入其中
            Console.WriteLine("All items have been consumed");
        }
    }
原文地址:https://www.cnblogs.com/kikyoqiang/p/10229862.html