30.7 併發集合類
阿新 • • 發佈:2019-01-06
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"); } }