我试图建立一个管道,第一个块将是生产者块。 它进入一个Enum对象,据此产生大量数据。此数据应在到达时自动发送到管道的以下步骤。
有没有办法做到这一点?或者我是否需要创建自定义块?
答案 0 :(得分:1)
我认为最简单的方法是使用BufferBlock
结合实际生成项目的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;
}