繁体   English   中英

C#async / await - 一个首选的多个任务

[英]C# async/await - multiple tasks with one preferred

我有以下场景/要求:

我有两个任务,任务A和任务B,它们都返回相同类型的数据。 如果任务A在完成时,其结果中包含数据,我需要返回任务A的结果 - 否则我返回任务B的结果。

我正在尝试对并行性进行性能优化,我不确定是否有比我正在做的更好的方法。 这似乎是很多代码可以做我想要的。

var firstSuccessfulTask = await Task.WhenAny(taskA, taskB);
if (firstSuccessfulTask != taskA)
{
    await taskA;
}

if (taskA.Result != null)
{
    return taskA.Result;
}

return await taskB;

只需按照您的要求阅读方式编写代码即可。 返回A的结果,除非它为null,在这种情况下,返回B的结果

return await taskA ?? await taskB;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM