Async Task.WhenAll с таймаутом - PullRequest
       57

Async Task.WhenAll с таймаутом

52 голосов
/ 24 марта 2012

Есть ли способ в новой библиотеке async dotnet 4.5 установить время ожидания для метода Task.WhenAll. Я хочу получить несколько источников и через 5 секунд остановиться и пропустить источники, которые не были закончены.

Ответы [ 11 ]

0 голосов
/ 25 марта 2012

Похоже, что перегрузка Task.WaitAll с параметром timeout - это все, что вам нужно - если он возвращает true, то вы знаете, что все они завершены - в противном случае вы можете фильтровать по IsCompleted.

if (Task.WaitAll(tasks, myTimeout) == false)
{
    tasks = tasks.Where(t => t.IsCompleted);
}
...
...