2

私の DataFlow パイプラインは で始まり、BatchBlockいくつかのタスクがアイテムを this に投稿していBatchBlockます。これで、メソッドBatchBlockの助けを借りて、Timer に応じて次のブロックにデータが伝播されます。TriggerBatch()

この場合、作成時に提供された (非常に大きな) バッチ サイズのバッチはないと想定BatchBlockできます。つまり、トリガーされた各バッチのサイズが異なる可能性があります。

をトリガーする直前にBatchBlock、パイプラインの次のブロックに伝播しようとしているバッチに存在するすべての重複アイテムを削除したいと思います。それを行う方法はありますか?

4

1 に答える 1

3

ブロック内に格納されているアイテムを追加または削除することはできません。

ただし、 のTransformBlock後にを追加しBatchBlockて、現在のバッチの重複を削除し、バッチを前に進めることができます。これは、バッチが小さくなる可能性があることを意味することに注意してください。

等価メンバーが正しく実装されていると仮定すると、次のようになります。

var transformBlock = new TransformBlock<int[], IEnumerable<int>>(_ => new HashSet<int>(_));
于 2015-09-24T14:00:13.117 に答える