jjzjj

TransformBlock

全部标签

c# - TransformBlock 永远不会完成

我正试图围绕TPL数据流block中的“完成”进行思考。特别是,TransformBlock似乎从未完成。为什么?示例程序我的代码计算从1到1000的所有整数的平方。为此我使用了一个BufferBlock和一个TransformBlock。在我的代码后面,我等待TransformBlock完成。但是,该block从未真正完成,我不明白为什么。staticvoidMain(string[]args){varbufferBlock=newBufferBlock();varcalculatorBlock=newTransformBlock(i=>{Console.WriteLine("Cal

c# - 跳过数据流转换 block 中的项目

TPLDataflow提供用于转换输入的TransformBlock,例如:vartb=newTransformBlock(i=>i*2);是否可以不输出某些输入,例如如果输入未通过某些验证测试?vartb=newTransformBlock(i=>{if(!ValidateInput(i)){//Dosomethingtonotoutputanythingforthisinput}//Normaloutput}如果这不可能,实现该目标的最佳模式是什么?像下面这样的东西?BufferBlockoutput=newBufferBlock();varab=newActionBlock(i=

c# - TPL Dataflow,仅在所有源数据 block 完成时保证完成

当两个转换block都完成时,如何重写代码完成的代码?我认为完成意味着它被标记为完成并且“出队列”是空的?publicTest(){broadCastBlock=newBroadcastBlock(i=>{returni;});transformBlock1=newTransformBlock(i=>{Console.WriteLine("1inputcount:"+transformBlock1.InputCount);Thread.Sleep(50);return("1_"+i);});transformBlock2=newTransformBlock(i=>{Console.Wr

c# - TPL Dataflow,仅在所有源数据 block 完成时保证完成

当两个转换block都完成时,如何重写代码完成的代码?我认为完成意味着它被标记为完成并且“出队列”是空的?publicTest(){broadCastBlock=newBroadcastBlock(i=>{returni;});transformBlock1=newTransformBlock(i=>{Console.WriteLine("1inputcount:"+transformBlock1.InputCount);Thread.Sleep(50);return("1_"+i);});transformBlock2=newTransformBlock(i=>{Console.Wr