ИМХО, можно было бы написать короче без DataFlow.
Мне кажется, что эта библиотека выгоднее на более крупных задачах нежели параллельная компрессия блоков.
Конечно, TPL DataFlow пригодится там, где процесс выглядит куда сложнее. Это простой пример, но он показывает, как, не напрягаясь, ограничить использование памяти, нагрузить процессор и легко синхронизировать обработанные данные.
Вы уже второй, кто говорит, что без этого было бы проще. Я бы с радостью посмотрел на простое решение с использованием async\await.
В этом примере тоже можно добавить async\await, чтобы не занимать даже один поток на чтение\запись.
Использование TPL Dataflow для многопоточной компрессии файлов