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