I want to run async 4-tier nested loop and print all aggregate exception but fail to do so. Followed MS post on how to handle exception in Parallel library.
Can get why I get always random number while it should print 3^3 times ?
Console.WriteLine("{0} was on counter\n\n\n",counter); class Program { static void Main() { int counter = 1; List<int> numbers = new List<int> {1, 2, 3}; try { ConcurrentQueue<Exception> exceptions = new ConcurrentQueue<Exception>(); Parallel.ForEach(numbers, number1 => { Parallel.ForEach(numbers, number2 => { Parallel.ForEach(numbers, number3 => { Parallel.ForEach(numbers, number4 => { try { throw new Exception(string.Format("number {0} failed on iteration {1}",number4,counter++)); } catch (Exception exception) { exceptions.Enqueue(exception); } }); }); }); }); if (!exceptions.IsEmpty) { throw new AggregateException(exceptions); } } catch (Exception exception) { Console.WriteLine("{0} was on counter\n\n\n",counter); GetInnerException(exception); } Console.WriteLine("Press any key to exit."); Console.ReadKey(); } public static void GetInnerException(Exception exception) { if (exception.GetType().Equals(typeof(AggregateException))) { AggregateException aggregateException = (AggregateException)exception; foreach (Exception innerException in aggregateException.InnerExceptions) { GetInnerException(innerException); } } else { Console.WriteLine(exception.ToString()); } } } thanks