BlockingCollection是一個線程安全的生產者-消費者集合。
代碼
public class BlockingTest { BlockingCollection<int> bc = new BlockingCollection<int>(); 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)); } } }View Code
結果: