I mają następujące wymagania: Wariant/C# asynchroniczny/oczekiwać - wiele zadań z korzystną
że ma dwa zadania, zadanie A i zadanie B, które zwracają taki sam typ danych. Jeśli zadanie A, po zakończeniu, ma dane w wyniku, muszę zwrócić wynik zadania A - w przeciwnym razie zwrócę wynik zadania B.
Próbuję zoptymalizować to pod kątem paralelizmu, a ja " nie jestem pewien, czy jest lepszy sposób niż to, co robię. Wydaje się, że jest dużo kodu, aby zrobić to, co chcę.
var firstSuccessfulTask = await Task.WhenAny(taskA, taskB);
if (firstSuccessfulTask != taskA)
{
await taskA;
}
if (taskA.Result != null)
{
return taskA.Result;
}
return await taskB;
Najpierw po prostu wywołaj 'await taskA' najpierw i pomiń wywołanie' Task.WhenAny'? – EJoshuaS