Пакетный вывод TransformManyBlock в потоке данных TPL - PullRequest
0 голосов
/ 20 декабря 2018

Есть ли способ ограничить очередь вывода TranformManyBlock в библиотеке потоков данных TPL?

У меня есть TranformManyBlock, который принимает файл в качестве входных данных и выводит экземпляр MyObject для каждой строки в файле.Проблема в том, что в файле может быть неограниченное количество строк, и было бы предпочтительнее отправлять пакеты из TransformManyBlock для обработки в следующем блоке, а не загружать их все в память сразу.Это почти как должно быть TransformManyBatchBlock.

Примерно так:

var convertFileToObjects = new TransformManyBatchBlock<FileInfo, MyObject>((Post, file) =>
{
    foreach (var line in file)
    {
        Post(ConvertFileToMyObject(line));
    }
}, new ExecutionDataflowBlockOptions(){OutputBoundedCapacity = 1000});
...