C#写一次块
例子
(只读变量:记住它的第一个数据项并将其副本作为输出传递。忽略所有其他数据项)
如果BufferBlock是TPLDataflow中最基本的块,那么WriteOnceBlock是最简单的。
它最多存储一个值,并且一旦设置了该值,它将永远不会被替换或覆盖。
您可以将WriteOnceBlockin视为类似于C#中的只读成员变量,不同之处在于它不是只能在构造函数中设置然后不可变,而是只能设置一次然后不可变。
拆分任务的潜在输出
public static async void SplitIntoBlocks(this Tasktask, out IPropagatorBlock result, out IPropagatorBlock exception) { result = new WriteOnceBlock (i => i); exception = new WriteOnceBlock (i => i); try { result.Post(await task); } catch(Exception ex) { exception.Post(ex); } }
StephenToub对TPL数据流的介绍