TPL数据流批处理块检查输入缓冲区中的元素

本文关键字:缓冲区 元素 输入 检查 数据流 批处理 TPL | 更新日期: 2023-09-27 18:15:21

我的DataFlow管道以BatchBlock开头。我想在TriggerBatch()方法的帮助下触发BatchBlock。我的批大小可以是可变的,所以在创建Batchblock时,我放置了一个相当高的BatchSize,我并不真正期望达到。

现在我想调用TriggerBatch()方法,这取决于BatchBlock是否确实有一些元素在其中,这些元素实际上可以被触发成批处理。有没有办法检查Batchblock的内部缓冲区是否为非空?如果没有,有没有人可以建议一个解决方案给我。BatchBlock是由多个线程将Post()的数据提供给Batchblock的。然而,我想要一个机制,可以等到有元素存在于Batchblock触发它之前。基本上我不希望我的TriggerBatch()是徒劳的。不幸的是,使用计时器不是我的选择。

在这一点上,我确实需要第三人的意见,因为我已经被困在这个问题上很长一段时间了。

TPL数据流批处理块检查输入缓冲区中的元素

使用DataflowBlock.Encapsulate,您可以创建一个自定义块,在其中您自己管理输入缓冲区,并可以根据自己的条件推送任何大小的批:https://stackoverflow.com/a/36437112/94853