AggregateException C # example

Я видел пример AggregateException в Интернете и пытаюсь понять, как это работает. Я написал простой пример, но мой код по какой-то причине не работает.

Может ли кто-нибудь объяснить мне, в чем проблема?

public static void Main()
{
    try
    {
        Parallel.For(0, 500000, i =>
        {
            if (i == 10523)
                throw new TimeoutException("i = 10523");
            Console.WriteLine(i + "\n");
        });
    }
    catch (AggregateException exception)
    {
        foreach (Exception ex in exception.InnerExceptions)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}
26
задан Lauren Van Sloun 11 April 2019 в 19:35
поделиться

1 ответ

При использовании Parallel «задание» (в данном случае от 0 до 500000) разделяется на несколько рабочих потоков. Каждый из них может вызвать исключение. В этом примере исключение закодировано, чтобы происходить в потоке, работающем на 10523. В реальном сценарии может произойти более одного исключения (в разных потоках) - AggregateException является просто «контейнером» для всех исключений, возникающих во время работы Parallel, поэтому что вы не потеряете ни одного исключения ...

11
ответ дан 28 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: