【发布时间】:2023-04-03 13:11:01
【问题描述】:
我正在尝试将一些数据推送到 BatchBlock,我需要在 foreach 循环中一一传递。我试图搜索一些将数组传递给 batchBlock 的方法,但没有找到类似的方法。
是否有任何方法或解决方法可以接受数组,如果没有,不包含此功能的原因是什么。
var modelsDataTable = modelsAndFormulasDataSet.Tables[0];
foreach (DataRow row in modelsDataTable.Rows)
{
modelIdsBatchBlock.Target1.Post<long>(row.Field<long>(AppConstants.ModelsDataTable.ModelId.ToString()));
}
【问题讨论】:
-
你能解释一下为什么你需要这样做吗,这可能是XY Problem?但简而言之,您可以将批处理块的类型参数设为数组而不是长数组,例如
new BatchBlock<long[]>(). -
如果我初始化像 var batchBlock = new BatchBlock
(3) 然后 batchBlock.post(new long[5](){1,2,3,4,5}) ;它将在 3 个数组发布到批处理块后调度,3 个长度为 5 的数组意味着它将在输入 15 个值后调度。但我只想发送 3 个值。 -
您完全正确。那么你想要的行为到底是什么?您是说要发布一个数组并拥有三个块输出组吗?
-
我遇到的一种情况是,var transformBlock = new TransformBlock
>,TransformBlock 返回 List ,我将它链接到 BatchBlock transformBlock.LinkTo(batchBlock) 和 batchBlock当批量达到 3 个值而不是 15 个值时应该处理值。
标签: c# .net task-parallel-library tpl-dataflow