多线程编程:任务控制与并行迭代
1. 任务异常处理
在多线程编程中,任务的异常处理是一个重要的方面。当任务完成时,如果存在未处理的异常,需要合适的机制来捕获和处理这些异常。
1.1 未处理异常的抛出
任务执行过程中产生的未处理异常会被抑制,直到调用任务完成成员(如Wait()、Result、Task.WaitAll()或Task.WaitAny())时才会抛出。以下代码展示了如何捕获任务中的未处理异常:
using System; using System.Threading.Tasks; public class Program { public static void Main() { Task task = Task.Factory.StartNew(() => { throw new ApplicationException(); }); try { task.Wait(); } catch (AggregateException exception) { foreach (Exception item in exception.InnerExceptions) { Console.WriteLine(