首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务取消

任务取消
EN

Stack Overflow用户
提问于 2013-05-05 15:09:14
回答 1查看 178关注 0票数 1

我想等到两个任务完成,但不是处于已完成状态。当两个任务都处于取消状态时,等待应该结束。

开通cancellationToken后取消taskA和taskB,这行还会继续吗?

代码语言:javascript
复制
Task.WaitAll(taskA, taskB); 

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-05-05 15:13:13

是的,当两个任务都处于终止状态时,无论该终止状态是什么,WaitAll都将退出。

但是,如果有任何任务出错或被取消,它将通过抛出AggregateException来完成。只有在所有任务都成功完成的情况下,它才会正常完成(即没有异常)。如果你只是想继续下去,你就需要捕捉这个异常。您可以查看AggregateExceptionInnerExceptions来区分取消和故障-当然,也可以查看taskAtaskB本身。

documentation的exceptions部分中:

AggregateException至少有一个任务实例被取消-或者-在执行至少一个任务实例的过程中引发异常。如果任务已取消,则AggregateException的InnerExceptions集合中包含一个OperationCanceledException。

请注意,如果您使用的是.NET 4.5和异步方法,您可能希望使用Task.WhenAll,它异步执行等待-它返回一个任务,该任务在原始任务完成时完成。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16382238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档