我试图建立一个管道,第一个块将是生产者块。它进入一个 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;
}