TPLデータフローを使用して画像を処理しています。処理要求を受け取り、ストリームから画像を読み取り、いくつかの変換を適用してから、結果の画像を別のストリームに書き込みます。
Request -> Stream -> Image -> Image ... -> Stream
そのために私はブロックを使用します:
BufferBlock<Request>
TransformBlock<Request,Stream>
TransformBlock<Stream,Image>
TransformBlock<Image,Image>
TransformBlock<Image,Image>
...
writerBlock = new ActionBlock<Image>
問題は、イニシャルRequest
には、結果を作成するために必要なデータStream
と、その時点で必要な追加情報が含まれていることです。次のように、元のRequest
(または他のコンテキストオブジェクト)をwriterBlock
他のすべてのブロックに渡して渡す必要がありますか?
TransformBlock<Request,Tuple<Request,Stream>>
TransformBlock<Tuple<Request,Stream>,Tuple<Request,Image>>
TransformBlock<Tuple<Request,Image>,Tuple<Request,Image>>
...
(これは醜いです)、または最初のブロックを最後のブロックにリンクする(または、一般化して、追加のデータを必要とするブロックにリンクする)方法はありますか?