C#广播块
例子
(复制一个项目并将副本发送到它链接到的每个块)
与BufferBlock不同,BroadcastBlock的任务是让所有从该块链接的目标获得发布的每个元素的副本,不断用传播给它的值覆盖“当前”值。
此外,与BufferBlock不同,BroadcastBlock不会不必要地保留数据。在向所有目标提供特定数据后,该元素将被下一行的任何数据覆盖(与所有数据流块一样,消息按FIFO顺序处理)。该元素将提供给所有目标,依此类推。
具有节流生产者的异步生产者/消费者
var ui = TaskScheduler.FromCurrentSynchronizationContext(); var bb = new BroadcastBlock(i => i); var saveToDiskBlock = new ActionBlock (item => item.Image.Save(item.Path) ); var showInUiBlock = new ActionBlock (item => imagePanel.AddImage(item.Image), new DataflowBlockOptions { TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext() } ); bb.LinkTo(saveToDiskBlock); bb.LinkTo(showInUiBlock);
从代理公开状态
public class MyAgent
{
public ISourceBlock Status { get; private set; }
public MyAgent()
{
Status = new BroadcastBlock();
Run();
}
private void Run()
{
Status.Post("Starting");
Status.Post("Doing cool stuff");
…
Status.Post("Done");
}
} StephenToub对TPL数据流的介绍
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练