В двух первых конструкторах в оболочку класса
BlockingCollectionПомимо методов
TryAdd () иTryTake (), определяемых параллельно с теми, что указываются в интерфейсеIProducerConsumerCollectionpublic void Add(T
Когда метод
Add() вызывается для неограниченной коллекции, он добавляет элементПрименяя методы
Add() иТаке(),можно реализовать простой шаблон "поставщик-потребитель", как показано в приведенном ниже примере программы. В этой программе создается поставщик, формирующий символы от А до Z, а также потребитель, получающий эти символы. При этом создается коллекция типаBlockingCollection// Простой пример коллекции типа BlockingCollection. using System;
using System.Threading.Tasks;
using System.Threading;
using System.Collections.Concurrent;
class BlockingDemo {
static BlockingCollection
// Произвести и поставить символы от А до Z. static void Producer () {
for(char ch = 'A'; ch <= 'Z'; ch++) { be.Add(ch);
Console.WriteLine ("Производится символ " + ch) ;
}
}
// Потребить 26 символов, static void Consumer() {
for(int i=0; i < 26; i++)
Console .WriteLine ("Потребляется символ " + bc.TakeO);
}
static void Main() {
// Использовать блокирующую коллекцию, ограниченную 4 элементами, be = new BlockingCollection
// Создать задачи поставщика и потребителя.