Параллельные. Исключения и отмена

18

Я попытался выяснить, как исключения и отменить работу для Parallel.Foreach. Кажется, что все примеры относятся к задачам.

Что происходит при исключении в Parallel.Foreach?
- Я завершу весь цикл в try / catch (AggregateException)?
- Будут ли выполняться все другие задачи в цикле, даже задачи, которые еще не начались, до того, как будет обнаружено исключение?

Те же вопросы для CancelationToken

    
задан adrianm 22.02.2011 в 09:23
источник

1 ответ

15

Короче говоря, исключение в каждом цикле агрегировано и представлено в разделе «Агрегатное исключение». Всякий раз, когда возникает исключение, завершаются циклы, которые запускаются, но никаких новых циклов не запускается. ForEach имеет много перегрузок , которые позволяют иметь локальный init & amp; наконец, блоки и действие тела также принимают ParallelLoopState , который может использовать код тела цикла чтобы проверить возникновение исключения на другом цикле, а затем, если необходимо, сломать его самостоятельно.

См. эту статью , которая содержит дополнительную информацию

    
ответ дан VinayC 22.02.2011 в 10:49
  • Просто та статья, которую я искал. Благодарю. –  adrianm 22.02.2011 в 11:15