码迷,mamicode.com
首页 > 编程语言 > 详细

Task_取消异步计算限制操作CancellationTokenSource和异步线程中异常的捕获

时间:2015-07-08 09:20:35      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

why:ThreadPool没有内建机制标记当前线程在什么时候完成,也没有机制在操作完成时获得返回值,因而推出了Task,更精确的管理异步线程。

How:通过构造方法的参数TaskCreationOptions控制如何创建任务,具体查看该枚举的枚举值。获取任务执行的结果有Task.Result属性,该属性内部调用wait(),例如WaitAny()、WaitAll()等等都可以。

如何取消执行中的任务呢?

实例化CancelletionTokenSource类,把该对象作为参数传给异步方法,在异步方法中调用该对象的ThrowIfCancellationRequested(),如果该对象的Cancel()方法被调用了,那么异步方法就会抛出异常OperationCanceledException,在主线程用try-catch进行捕获(AggregateException),就可以捕获异常并进行处理。

Task_取消异步计算限制操作CancellationTokenSource和异步线程中异常的捕获

标签:

原文地址:http://www.cnblogs.com/kexxxfeng/p/4629130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!