我想向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一个谓词,当然不存在.