我想请求X个不同的Web服务,并且每个服务都会返回
这些任务应该并行执行,我想等待第一个完成并返回
在下面的示例中,由于
true
或false
。这些任务应该并行执行,我想等待第一个完成并返回
true
的任务。当我收到一个true
值时,我不希望等待其他任务完成。在下面的示例中,由于
t3
首先完成并返回true
,因此不应等待t1
:t1
不需要使用await。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);
基本上我正在寻找带有谓词的Task.WhenAny
,当然这是不存在的。
async-await
环境下,那个问题不太相关。 - i3arnon