BlockingCollection是一个线程安全的生产者-消费者集合。
代码
public classBlockingTest { BlockingCollection<int> bc = new BlockingCollection<int>(); publicBlockingTest() { Task.Factory.StartNew(ProduceTask); Task.Factory.StartNew(ConsumeTask); } private voidProduceTask() { foreach (var item in Enumerable.Range(1, 100)) { Console.WriteLine(string.Format("+++++++++++++: {0}", item)); bc.Add(item); } bc.CompleteAdding(); } private voidConsumeTask() { foreach(var item inbc.GetConsumingEnumerable()) { Console.WriteLine(string.Format("---------------: {0}", item)); } } }
结果: