В двух первых конструкторах в оболочку классаBlockingCollection
Помимо методовTryAdd () иTryTake (), определяемых параллельно с теми, что указываются в интерфейсеIProducerConsumerCollection
public 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
// Создать задачи поставщика и потребителя.