Цикл Parallel.ForEach с BlockingCollection.GetConsumableEnumerable ⇐ C#
-
Гость
Цикл Parallel.ForEach с BlockingCollection.GetConsumableEnumerable
Почему цикл Parallel.ForEach завершается с OperationCancelledException при использовании GetConsumableEnumerable?
//вне функции статический BlockingCollection _collection = новый BlockingCollection(); вар т = Task.Factory.StartNew(Производитель); Parallel.ForEach(_collection.GetConsumingEnumerable(), item => Console.WriteLine("Обработано {0}", item)); Console.WriteLine("ОБРАБОТКА ЗАВЕРШЕНА"); public static void Producer() { данные var = Enumerable.Range(1, 1000); foreach (var i в данных) { _collection.Add(я); Console.WriteLine("Добавлено {0}",i); } Console.WriteLine("Добавление завершено"); _collection.CompleteAdding(); }
Почему цикл Parallel.ForEach завершается с OperationCancelledException при использовании GetConsumableEnumerable?
//вне функции статический BlockingCollection _collection = новый BlockingCollection(); вар т = Task.Factory.StartNew(Производитель); Parallel.ForEach(_collection.GetConsumingEnumerable(), item => Console.WriteLine("Обработано {0}", item)); Console.WriteLine("ОБРАБОТКА ЗАВЕРШЕНА"); public static void Producer() { данные var = Enumerable.Range(1, 1000); foreach (var i в данных) { _collection.Add(я); Console.WriteLine("Добавлено {0}",i); } Console.WriteLine("Добавление завершено"); _collection.CompleteAdding(); }
Мобильная версия