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>(_));
我的 DataFlow 管道以 BatchBlock
开始,多个任务正在将项目发布到此 BatchBlock
。现在,BatchBlock
借助 TriggerBatch()
方法根据定时器将数据传播到下一个块。
在这种情况下,您可以假设 none 个批次具有在创建 BatchBlock
期间提供的(非常高的)批次大小,即每个触发的批次可能是不同的尺寸。
就在触发 BatchBlock
之前,我想删除批次中存在的所有重复项目,这些项目将传播到管道中的下一个块。有什么办法可以做到吗?
您不能添加或删除存储在块内的项目。
但是,您可以在 BatchBlock
之后添加 TransformBlock
以删除当前批次的重复项并向前移动批次。请记住,这意味着您的批次可能会更小。
假设正确实现了平等成员,它看起来像这样:
var transformBlock = new TransformBlock<int[], IEnumerable<int>>(_ => new HashSet<int>(_));