我设计了一个由各种DataBlocks组成的复杂数据流。我将一个包发送到流中,并在结束时接收结果。
我和我一起工作
input.Post();
input.Complete();
// and later with
ReceiveAsync();
对于第一个调用,一切正常,但我不知道如何将第二个数据包发送到流程图中。
在图中我还必须使用WriteOnceBlock
,这对于调用两次流会有问题吗?
发布于 2017-04-19 16:53:27
在为任何TPL Dataflow
块或通过完成传播链接到它们的那些块调用了Complete
方法之后,就不能再使用它们了。因此,您要么需要为每个调用重新创建管道,要么(这是首选的)不只为一个调用调用Complete
。
Post/Receive
方法获取数据,它可以被linking the blocks替代。此外,您可以使用completion propagation for this,因此您将删除代码中的所有连续处理程序。WriteOnceBlock
吗?您可以将其切换为Broadcast
,以便您仍具有数据值,但该值可被下一次调用覆盖。WriteOnceBlock
或存储MaxMessages
for linked blocks的IDisposable
结果来取消链接LinkTo
method,以便在下次调用时将其移除,并创建新的onehttps://stackoverflow.com/questions/43498145
复制相似问题