最初のブロックがプロデューサーブロックになるパイプラインを構築しようとしています。Enum オブジェクトを取得し、これに従って大量のデータを生成します。このデータは、到着するとパイプラインの次のステップに自動的に送信されます。
これを行う方法はありますか?または、カスタムブロックを作成する必要がありますか?
最初のブロックがプロデューサーブロックになるパイプラインを構築しようとしています。Enum オブジェクトを取得し、これに従って大量のデータを生成します。このデータは、到着するとパイプラインの次のステップに自動的に送信されます。
これを行う方法はありますか?または、カスタムブロックを作成する必要がありますか?
最も簡単な方法は、実際にアイテムを生成するaBufferBlock
と組み合わせて使用することだと思います。Task
何かのようなもの:
public ISourceBlock<Foo> CreateProducer()
{
var block = new BufferBlock<Foo>(); // add options if necessary
Task.Run(() =>
{
try
{
while (whatever)
{
Foo foo = …;
block.Post(foo); // or await SendAsync() if block is bounded
}
}
catch (Exception ex)
{
((IDataflowBlock)block).Fault(ex);
}
});
return block;
}