我的DataFlow管道以BatchBlock
开头,有几个任务将项目发布到此BatchBlock
。现在,BatchBlock
在TriggerBatch()
方法的帮助下,根据计时器将数据传播到下一个块。
在这种情况下,您可以假设在创建BatchBlock
期间没有批次具有(非常高)批量大小,即每个触发的批次可能具有不同的大小。
在触发BatchBlock
之前,我想删除批处理中存在的所有重复项目,这些项目即将传播到管道中的下一个块。我有办法做到吗?
答案 0 :(得分:1)
您无法添加或删除存储在块内的项目。
但是,您可以在TransformBlock
之后添加BatchBlock
,以删除当前批次的重复项并向前移动批次。请记住,这意味着您的批次可能会更小。
假设正确实现了相等成员,它可以如下所示:
var transformBlock = new TransformBlock<int[], IEnumerable<int>>(_ => new HashSet<int>(_));