[调用Complete函数后未执行C#TransformBlock

问题描述 投票:0回答:1

我有此代码段:

static void Main(string[] args)
{
    var printResult = new ActionBlock<int>(x =>
    {
        Console.WriteLine(x);
    });
    var countBytes = new TransformBlock<int, int>(
        new Func<int, int>((x)=> { return 2 * x; }));
    countBytes.LinkTo(printResult, new DataflowLinkOptions { PropagateCompletion = true });
    countBytes.Completion.ContinueWith(delegate { printResult.Complete(); });
    countBytes.Complete();
    printResult.Completion.Wait();
    Console.ReadKey();
}

我希望有TransformBlock代码

return 2*x

将运行,然后打印结果,但实际上不打印任何内容。我在[]内设置了一个断点

printResult

“ Console.WriteLine”上的功能对象,但未介入。

为什么不打印任何东西,我在哪里弄错了以及如何解决它?

我有此代码段:static void Main(string [] args){var printResult = new ActionBlock (x => {Console.WriteLine(x);}); var countBytes = new ...

c# parallel-processing transform block complete
1个回答
0
投票

您缺少告诉countBytes将完成传播到链接块的设置(尝试使用ContinueWith()完成链接块是错误的方法)。

此外,如果您不向管道发布任何内容,将不会有任何输出。

© www.soinside.com 2019 - 2024. All rights reserved.