In my previous article, I explained about Parallel.For andParallel.Foreach loop in detail. In this article I will explain, how to handle
exception in Parallel.For and Parallel.Foreach loop.
Parallel.For and Parallel.Foreach methods doesn’t provide
any special mechanism to handle exception thrown from parallel loops. We can catch unhandled exceptions using try catch block inside parallel loop. When you add any try catch block to catch exception in parallel loop,
there is possibility that the same exception may throw by multiple threads in
parallel. So we need to wrap try catch block inside parallel loop and also on
method from where we call parallel loop to catch all types of exceptions. See
below example.
Code –
Output –
As you can see in above example, all exception thrown from Parallel.For
loop is captured as ArgumentException and added to ConcurrentQueue from
multiple threads. If parallel loop has any exception occurred, then we need to iterate all
the exception to get exception message.
References –
See also –
Parallel.For and Parallel.Foreach – TPL
Background Worker in WPF
How to handle exception while working with Threading?
Background Worker in WPF
How to handle exception while working with Threading?