TPL 数据流 Batchblock 重复元素

TPL Dataflow Batchblock Duplicate elements

我的 DataFlow 管道以 BatchBlock 开始,多个任务正在将项目发布到此 BatchBlock。现在,BatchBlock借助 TriggerBatch() 方法根据定时器将数据传播到下一个块。

在这种情况下,您可以假设 none 个批次具有在创建 BatchBlock 期间提供的(非常高的)批次大小,即每个触发的批次可能是不同的尺寸。

就在触发 BatchBlock 之前,我想删除批次中存在的所有重复项目,这些项目将传播到管道中的下一个块。有什么办法可以做到吗?

您不能添加或删除存储在块内的项目。

但是,您可以在 BatchBlock 之后添加 TransformBlock 以删除当前批次的重复项并向前移动批次。请记住,这意味着您的批次可能会更小。

假设正确实现了平等成员,它看起来像这样:

var transformBlock = new TransformBlock<int[], IEnumerable<int>>(_ => new HashSet<int>(_));