TPL数据流批处理块检查输入缓冲区中的元素
本文关键字:缓冲区 元素 输入 检查 数据流 批处理 TPL | 更新日期: 2023-09-27 18:15:21
我的DataFlow管道以BatchBlock
开头。我想在TriggerBatch()
方法的帮助下触发BatchBlock
。我的批大小可以是可变的,所以在创建Batchblock
时,我放置了一个相当高的BatchSize
,我并不真正期望达到。
现在我想调用TriggerBatch()
方法,这取决于BatchBlock
是否确实有一些元素在其中,这些元素实际上可以被触发成批处理。有没有办法检查Batchblock
的内部缓冲区是否为非空?如果没有,有没有人可以建议一个解决方案给我。BatchBlock
是由多个线程将Post()
的数据提供给Batchblock
的。然而,我想要一个机制,可以等到有元素存在于Batchblock
触发它之前。基本上我不希望我的TriggerBatch()
是徒劳的。不幸的是,使用计时器不是我的选择。
在这一点上,我确实需要第三人的意见,因为我已经被困在这个问题上很长一段时间了。
使用DataflowBlock.Encapsulate
,您可以创建一个自定义块,在其中您自己管理输入缓冲区,并可以根据自己的条件推送任何大小的批:https://stackoverflow.com/a/36437112/94853