我预计以下几个方面可以从两个出版商那里获得产出,但是它只产生第一个输出:
var broadcastBlock = new BroadcastBlock<int>(null); var transformBlock = new TransformBlock<int,int>(i => i*10); var publish1 = new ActionBlock<int>(i => Console.WriteLine("Publisher 1:" + i)); var publish2 = new ActionBlock<int>(i => Console.WriteLine("Publisher 2:" + i)); broadcastBlock.LinkTo(transformBlock,new DataflowLinkOptions() { PropagateCompletion = true }); transformBlock.LinkTo(publish1,new DataflowLinkOptions() { PropagateCompletion = true }); transformBlock.LinkTo(publish2,new DataflowLinkOptions() { PropagateCompletion = true }); foreach (var i in Enumerable.Range(0,5)) { broadcastBlock.Post(i); } broadcastBlock.Complete(); Task.WhenAll(publish1.Completion,publish2.Completion).Wait();
我显然在这里遗漏了一些基本的东西,任何想法?