C# async/await - 多项任务首选一项
C# async/await - multiple tasks with one preferred
我有以下 scenario/requirement:
我有两个任务,任务 A 和任务 B,它们都是 return 相同类型的数据。
如果任务 A 在完成后在其结果中包含数据,我需要 return 任务 A 的结果 - 否则我 return 任务 B 的结果。
我正在尝试针对并行性对此进行性能优化,我不确定是否有比我正在做的更好的方法。这似乎有很多代码可以做我想做的事。
var firstSuccessfulTask = await Task.WhenAny(taskA, taskB);
if (firstSuccessfulTask != taskA)
{
await taskA;
}
if (taskA.Result != null)
{
return taskA.Result;
}
return await taskB;
只需按照您的要求阅读的方式编写代码即可。 return A 的结果,除非它为空,在这种情况下,return B 的结果。
return await taskA ?? await taskB;
我有以下 scenario/requirement:
我有两个任务,任务 A 和任务 B,它们都是 return 相同类型的数据。 如果任务 A 在完成后在其结果中包含数据,我需要 return 任务 A 的结果 - 否则我 return 任务 B 的结果。
我正在尝试针对并行性对此进行性能优化,我不确定是否有比我正在做的更好的方法。这似乎有很多代码可以做我想做的事。
var firstSuccessfulTask = await Task.WhenAny(taskA, taskB);
if (firstSuccessfulTask != taskA)
{
await taskA;
}
if (taskA.Result != null)
{
return taskA.Result;
}
return await taskB;
只需按照您的要求阅读的方式编写代码即可。 return A 的结果,除非它为空,在这种情况下,return B 的结果。
return await taskA ?? await taskB;