TPL 数据流:创建者启动块
本文关键字:启动 创建者 数据流 TPL | 更新日期: 2023-09-27 18:31:00
我试图建立一个管道,其中第一个块将是生产者块。它进入一个枚举对象,并据此生成大量数据。此数据应在管道到达时自动发送到管道的以下步骤。
有什么办法可以做到这一点吗?还是我需要创建自定义块?
我认为最简单的方法是将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;
}