Ami*_*t G 13 .net c# task-parallel-library tpl-dataflow
我期望以下两个发布者产生输出,但它只产生第一个的输出:
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();
Run Code Online (Sandbox Code Playgroud)
我显然在这里缺少一些基本的东西,任何想法?
i3a*_*non 15
您将2 ActionBlocks 链接到单个TransformBlock.您应该将2 ActionBlocks BrodcastBlock链接BroadcastBlock到并链接到TransformBlock.
你有什么:
BroadCast => Transfrom => ActionBlock
=> ActionBlock
Run Code Online (Sandbox Code Playgroud)
你需要什么:
Transfrom => BroadCast => ActionBlock
=> ActionBlock
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |