2

我的 DataFlow 管道以 a 开头,BatchBlock并且有几个任务将项目发布到此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 回答