2

私はTransformManyBlock<Tin, Tout>実行時に消費者(ActionBlocks)を追加しLinkTo(...)ます。

  1. TransformManyBlock は、要素を消費して変換し、複数の消費者に出力 (入力と同じ数の要素を出力) するための正しいデータ フロー ブロックですか? BroadCastBlock は、BufferBlock と同様に要素を変換できないように思われるため、意図的に選択しませんでした。

  2. 実行時にコンシューマー (ここでは ActionBlocks) のリンクを解除する方法を知りたいですか? 私が見る限り、 LinkTo() はそのような機能を提供していないようです。

4

1 に答える 1

8
  1. TransformManyBlock入力の1つのアイテムを出力の複数のアイテムに変換するためのものであり、消費者の数とは関係ありません。

    cloningFunctionターゲットごとに個別に変換を実行したい場合は、まさにそれBroadcastBlockが目的です。

    変換を 1 回実行してから、各ターゲットに同じオブジェクトを送信する場合は、それらを結合TransformBlockBroadcastBlockてリンクすることができます。アイテムは によって変換され、TransformBlockによってすべてのターゲットに送信されますBroadcastBlock

  2. の戻り値LinkTo()は次のとおりです。

    IDisposableを呼び出すと、ソースとターゲットのDisposeリンクが解除されます。

    これはまさにあなたが必要とするものです。から返された値を保存し、必要に応じてLinkTo()それを保存しますDispose()

于 2012-08-21T10:47:44.270 に答える