Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpAsWy 335 of 509 menu
◀ ▶

Первая готовая задача WhenAny в C#

Метод WhenAny полезен, когда достаточно первого успешного ответа: резервный канал, кэш на узле, повтор запроса. Остальные задачи могут ещё выполняться, но результат победителя уже доступен.

Важно не путать с отменой проигравших: WhenAny лишь сообщает, какая задача завершилась раньше. Дальнейшая обработка зависит от вашей логики.

Сравним быстрый ответ кэша и медленный ответ хранилища. Медленная задача при этом может ещё работать:

static Task<string> EdgeCacheLookup() => Task.Run(() => { Thread.Sleep(40); return "edge"; }); static Task<string> OriginDatabaseLookup() => Task.Run(() => { Thread.Sleep(300); return "origin"; }); Task<string> finished = await Task.WhenAny(EdgeCacheLookup(), OriginDatabaseLookup()); Console.WriteLine(await finished); // выведет "edge"

Запросите два склада: ближний возвращает "near", дальний - "far". Выведите метку склада, который ответил раньше.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить