pap*_*ane 4 c# dataflow task-parallel-library tpl-dataflow
抱歉,如果已经有类似的问题,我找不到。
我有以下情况:
是否有一个块(或其他一些解决方案)我可以使用它会接受类型IEnumerable<T>或类似的输入并将其每个元素转发IEnumerable到一个期望接收的块T?
我不想重新发明轮子,所以我想在深入研究 API 并尝试编写自定义块之前检查是否有简单的解决方案。此外,将错误和完成传播到管道末端也很重要。
谢谢你的回答!
不需要自定义块。您正在寻找TransformManyBlock. 这是一个简单的演示:
public async Task TransformManyExample() {
var data = Enumerable.Range(0, 10).ToList();
var block1 = new TransformManyBlock<IEnumerable<int>, int>(x => x);
var block2 = new ActionBlock<int>(x => Console.WriteLine(x.ToString()));
block1.LinkTo(block2, new DataflowLinkOptions() { PropagateCompletion = true });
block1.Post(data);
block1.Complete();
await block2.Completion;
}
Run Code Online (Sandbox Code Playgroud)