Looking for c# Keywords? Try Ask4Keywords

C# Language BatchBlock


пример

(Группирует определенное количество последовательных элементов данных в коллекции элементов данных)

BatchBlock объединяет N отдельных элементов в один пакетный элемент, представленный как массив элементов. Экземпляр создается с определенным размером партии, и блок затем создает пакет, как только он получает это количество элементов, асинхронно выводит пакет в выходной буфер.

BatchBlock способен выполнять как жадные, так и неживые режимы.

  • В жадном режиме по умолчанию все сообщения, предлагаемые блоку из любого количества источников, принимаются и буферизуются для преобразования в партии.
    • В не жадном режиме все сообщения откладываются из источников, пока достаточное количество источников не предложит блок сообщения для создания пакета. Таким образом, BatchBlock может использоваться для приема 1 элемента из каждого из N источников, N элементов из 1 источника и множества параметров между ними.

введите описание изображения здесь

Группировка запросов в группы по 100 для отправки в базу данных

var batchRequests = new BatchBlock<Request>(batchSize:100);
var sendToDb = new ActionBlock<Request[]>(reqs => SubmitToDatabase(reqs));

batchRequests.LinkTo(sendToDb);

Создание партии один раз в секунду

var batch = new BatchBlock<T>(batchSize:Int32.MaxValue);
new Timer(() => { batch.TriggerBatch(); }).Change(1000, 1000);

Введение в поток данных TPL Стивена Туба