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