好ましいです。 タスクAの完了時に結果にデータがある場合、タスクAの結果を返す必要があります。それ以外の場合は、タスクBの結果を返します。C#の非同期/待つ一方に複数のタスクは、私は次のシナリオ/要件を有する
私はパラレル化のパフォーマンスを最適化しようとしています。私がやっていることよりも良い方法があるかどうかは分かりません。これは私が望むことをするためのコードのように思えます。
var firstSuccessfulTask = await Task.WhenAny(taskA, taskB);
if (firstSuccessfulTask != taskA)
{
await taskA;
}
if (taskA.Result != null)
{
return taskA.Result;
}
return await taskB;
まず、 'await taskA'を最初に呼び出し、' Task.WhenAny'呼び出しをスキップするのはなぜですか? – EJoshuaS