1

我试图建立一个管道,第一个块将是生产者块。它进入一个 Enum 对象,并据此产生大量数据。此数据应在到达时自动发送到管道的以下步骤。

有没有办法做到这一点?还是我需要创建一个自定义块?

4

1 回答 1

1

我认为最简单的方法是使用 aBufferBlockTask实际生成项目的组合。就像是:

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;
}
于 2013-09-12T13:48:31.090 回答