无锡哪里做网站好,计算机个人网站建设论文,android应用程序开发教程,会员登录管理系统写在前面
当Task在执行过程中出现异常或被取消等例外的情况时#xff0c;为了让执行流程能够继续进行#xff0c;可以使用延续方法实现这种链式处理#xff1b;还可以针对前置任务不同的执行结果#xff0c;选择执行不同的延续分支方法。子任务执行过程中的任何异常都会被…写在前面
当Task在执行过程中出现异常或被取消等例外的情况时为了让执行流程能够继续进行可以使用延续方法实现这种链式处理还可以针对前置任务不同的执行结果选择执行不同的延续分支方法。子任务执行过程中的任何异常都会被传递到延续方法中进行统一处理因此而增强了对并行任务的流程控制。
代码实现 public static void ContinueWithException(){TaskCreationOptions tco TaskCreationOptions.AttachedToParent;Task task Task.Factory.StartNew(() {Task.Factory.StartNew(() { throw new Exception(Environment.NewLine first exception Environment.NewLine); }, tco);Task.Factory.StartNew(() { throw new Exception(Environment.NewLine second exception Environment.NewLine); }, tco);Task.Factory.StartNew(() { throw new Exception(Environment.NewLine third exception Environment.NewLine); }, tco);}).ContinueWith(t Console.WriteLine(Message: t.Exception.Message Environment.NewLine), TaskContinuationOptions.OnlyOnFaulted);task.Wait();Task task01 Task.Factory.StartNew(() {Console.WriteLine(task01 executed.);});Task ok1 task01.ContinueWith(t Console.WriteLine(Ok), TaskContinuationOptions.NotOnFaulted);Task fail1 task01.ContinueWith(t Console.WriteLine(Failure: t.Exception.Message), TaskContinuationOptions.OnlyOnFaulted);Task task02 Task.Factory.StartNew(() {throw new Exception(task02 executed.);});Task ok2 task02.ContinueWith(t Console.WriteLine(Ok), TaskContinuationOptions.NotOnFaulted);Task fail2 task02.ContinueWith(t Console.WriteLine(Failure: t.Exception.Message), TaskContinuationOptions.OnlyOnFaulted);}
调用结果 如图子任务中分别抛出的三个异常信息都被传递到了延续方法中程序依然可以继续执行另外task01和task02分别根据执行情况进入了不同的延续分支方法。