c# – Task.Run(Action,CancellationToken)什么时候抛出TaskCanceledException?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Task.Run(Action,CancellationToken)什么时候抛出TaskCanceledException?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1099字,纯文字阅读大概需要2分钟。
内容图文
根据documentation Task.Run(Action,CancellationToken)在任务被取消时抛出TaskCanceledException.
什么时候Task.Run(Action,CancellationToken)确实抛出TaskCanceledException?目前尚不清楚抛出此异常必须满足哪些条件.
解决方法:
似乎有些混乱(文档可能会产生误导).
引用Task.Run方法永远不会抛出TaskCanceledException(至少在当前实现中).与“动作参数为空”和“与cancelToken关联的CancellationTokenSource已被释放”时同步抛出的ArgumentNullException和ObjectDisposedException不同.分别.
然而,Task.Run返回一个可以使用CancellationToken参数取消的任务(更多关于here中的取消)并等待它的等待任务,task.Wait(),task.Result等会抛出TaskCanceledException(可能包含在一个AggregateException)
Task<int> task = null;
try
{
task = Task.Run(() => 5, new CancellationToken(true));
}
catch (TaskCanceledException)
{
Console.WriteLine("Unreachable code");
}
try
{
int result = await task;
}
catch (TaskCanceledException)
{
Console.WriteLine("Awaiting a canceled task");
}
如果文档有两部分可能的例外情况,可能会更清楚:
>“常规”同步异常(例如ArgumentNullException和ObjectDisposedException)
>“async”异步异常只能通过等待返回的任务抛出(例如TaskCanceledException)
内容总结
以上是互联网集市为您收集整理的c# – Task.Run(Action,CancellationToken)什么时候抛出TaskCanceledException?全部内容,希望文章能够帮你解决c# – Task.Run(Action,CancellationToken)什么时候抛出TaskCanceledException?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。