处理方法:线程启动后,使用try-catch,通过wait或者waitall来捕获异常。
单个Task的情况:
System.Threading.Tasks.Task task1 = new System.Threading.Tasks.Task(TaskMethod); task1.Start(); try { task1.Wait(); } catch(AggregateException ae) { Console.WriteLine("task1 异常"); }
多个Task的情况:
System.Threading.Tasks.Task[] tasks = new System.Threading.Tasks.Task[3]; tasks[1] = new System.Threading.Tasks.Task(TaskMethod); tasks[1].Start(); tasks[2] = new System.Threading.Tasks.Task(TaskMethod); tasks[2].Start(); tasks[3] = new System.Threading.Tasks.Task(TaskMethod); tasks[3].Start(); try { System.Threading.Tasks.Task.WaitAll(tasks); } catch(AggregateException ex) { foreach (var exception in ex.InnerExceptions) { Console.WriteLine(exception.ToString()); } }
public static void TaskMethod() { //略 }