相关疑难解决方法(0)

TPL等待任务以特定的返回值完成

我想向X提出不同的Web服务请求,每个Web服务都返回true或者false.

这些任务应该并行执行,我想等待完成的第一个具有真正的价值.当我收到真正的价值时,我不想等待其他任务完成.

在下面的示例中,自首先完成后t1不应等待t3并返回true:

var t1 = Task.Run<bool>(() =>
{
    Thread.Sleep(5000);
    Console.WriteLine("Task 1 Excecuted");
    return true;
}, cts.Token);

var t2 = Task.Run<bool>(() =>
{
    Console.WriteLine("Task 2 Executed");
    return false;
}, cts.Token);

var t3 = Task.Run<bool>(() =>
{
    Thread.Sleep(2000);
    Console.WriteLine("Task 3 Executed");
    return true;
}, cts.Token);
Run Code Online (Sandbox Code Playgroud)

基本上我正在寻找Task.WhenAny一个谓词,当然不存在.

.net c# task-parallel-library async-await

9
推荐指数
2
解决办法
1851
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

task-parallel-library ×1