【发布时间】:2016-01-21 16:12:29
【问题描述】:
我在 TPL-Dataflow 上进行自我训练,并且我已经阅读到使用不可变对象作为消息是要走的路。
为了遵守这一点,我为每个块的输入和输出设计了特定的类。
不幸的是,当我将我的块相互链接时,因为块的输入和输出类型非常不同,导致TransformBlock的泛滥:
var proc1 = new TransformBlock<proc1In,proc1Out>(...
var convertOut1toIn2 = new TransformBlock<proc1Out,proc2In>(p1 => new proc2In { ...
var proc2 = TransformBlock<proc2In,proc2Out>(...
proc1.LinkTo(convertOut1ToIn2);
convertOut1ToIn2.LinkTo(proc2);
稍后使用 Batch 和 Join 块将结果合并在一起让我难以处理非常混乱的代码。
我在 Internet 上阅读的每个示例都使用简单类型,例如 int、string...我没有找到任何处理更复杂类型的东西。
我有使用单个大对象并将其引用传递给所有块的冲动。在犯这个错误之前,我想知道是否有更好的方法。
【问题讨论】:
标签: c# tpl-dataflow