2013-08-22 4 views
-1

У меня есть список задач, которые больше всего выполняются до завершения, а другие - сбой. В случае неисправности задачи я обрабатываю эту ситуацию. Тем не менее, я хочу напечатать результаты всех задач, когда они все закончили. Но некоторые задачи в списке также ошибочно, поэтому я пытаюсь найти правильный способ справиться с этим (оператор if внутри метода).Обработка состояния задачи Состояние

Вот мой код:

private void CompleteTasks(Task[] tasks) 
{ 
    if(tasks.All(t => t.Status == (TasksStatus.RanToCompletion) || t.Status == (TaskStatus.Faulted))) 
    { 
     //Print each result 
    } 
} 
+0

Что не так с тем, что у вас есть (кроме необходимости сэкономить результат «IEnumerable» и использовать его в инструкции if) –

ответ

0

Вы можете найти исключение Целевого в использовании Task.Exception собственности. Если есть исключение, оно будет завернуто в AggregateException.

См MSDN Task.Exception

, а также Exception Handling (Task Parallel Library)

Механизм параллельного библиотека задач предусматривает ждать, пока все задачи закончены не Task.WaitAll.

+0

Да Я знаю, как обрабатывать исключение. Я просто хотел узнать для своей ситуации, что это еще один способ справиться с этим утверждением if? –

+0

@DeVonte - Вы хотите распечатать те задачи, которые были закончены, хотя некоторые из них не закончены или вы хотите дождаться завершения всех? В последнем случае вы должны использовать WaitAll. Я не понимаю, чего вы хотите. – hatchet

+0

Я хотел бы распечатать задачи, которые имеют статус завершен и неисправен. Поскольку заранее я уже справляюсь с тем, что происходит при сбое задачи. Я предполагаю, что в других терминах я хочу удостовериться, что все задачи имеют статус завершенных или ошибочных, прежде чем печатать. –

Смежные вопросы