我正在学习数据流基础知识. 下面是一个代码示例,它看起来是正确的,但不起作用. 它不是返回结果整数值,而是冻结. 在我的理解中,这是因为补全不是在块之间传播的.
public static int Process(int value)
{
var multiplyBlock = new TransformBlock<int, int>(item => item * 2);
var subtractBlock = new TransformBlock<int, int>(item => item - 2);
var options = new DataflowLinkOptions() { PropagateCompletion = true };
multiplyBlock.LinkTo(subtractBlock, options);
multiplyBlock.Post(value);
multiplyBlock.Complete();
subtractBlock.Completion.Wait(); // <--- code freezes here
return subtractBlock.Receive();
}
你能帮我了解一下遗漏了什么吗?