2

我有一个TransformManyBlock<Tin, Tout>并且在运行时添加消费者(ActionBlocks)到LinkTo(...).

  1. TransformManyBlock 是否是正确的数据流块来消费元素,转换它们,然后输出(与输入相同数量的元素输出)给多个消费者(每个链接到的消费者像广播一样消费相同的元素)?我故意不选择 BroadCastBlock,因为它似乎无法像 BufferBlock 一样转换元素。

  2. 我想知道如何在运行时取消链接消费者(此处为 ActionBlocks)?据我所知,LinkTo() 似乎没有提供这样的功能。

4

1 回答 1

8
  1. TransformManyBlock是将输入上的一项转化为输出上的多项,与消费者数量无关。

    如果您想为每个目标分别执行转换,那么这正是cloningFunctioninBroadcastBlock的用途。

    如果您想执行一次转换,然后向每个目标发送相同的对象,您可以将它们组合TransformBlockBroadcastBlock链接在一起。该项目将由 转换TransformBlock,然后由 发送到所有目标BroadcastBlock

  2. 的返回值为LinkTo()

    IDisposable调用 时,将Dispose取消源与目标的链接。

    这正是您所需要的。只需存储返回的值LinkTo(),然后Dispose()在必要时存储它。

于 2012-08-21T10:47:44.270 回答