小编Jas*_*ker的帖子

使用谓词时 TPL 数据流永远不会完成

我有以下 TPL 数据流,当使用谓词过滤从 TransformBlock 传递到 ActionBlock 的项目时,它永远不会完成。

如果谓词对任何项目返回 false,则数据流挂起。

请有人提供一些关于发生了什么以及如何解决这个问题的见解?

// define blocks 
var getBlock = new TransformBlock<int, int>(i =>
{
    Console.WriteLine($"getBlock: {i}");

    return ++i;
});

var writeBlock = new ActionBlock<int>(i =>
{
    Console.WriteLine($"writeBlock: {i}");
});

// link blocks
getBlock.LinkTo(writeBlock, new DataflowLinkOptions
{
    PropagateCompletion = true
}, i => i == 12); // <-- this predicate prevents the completion of writeBlock

// push to block 
var items = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, …
Run Code Online (Sandbox Code Playgroud)

tpl-dataflow

3
推荐指数
1
解决办法
583
查看次数

标签 统计

tpl-dataflow ×1