取消task

m0_37646670 2019-08-07 12:17:10
我发现个问题啊
一条线程上,有个task在等待结果
然后你可能在另个地方把这个task取消了

程序就像设定了goto一样,直接跳到task的抛出异常
就不回原先程序的地方了


v.tcs.SetCanceled();//取消task
v.finished = true;//后面都不会运行了
……
...全文
236 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2019-08-08
  • 打赏
  • 举报
回复
被取消的线程,使用cancelTokenSource实现,不会抛出exception,自己搜下cancelTokenSource
正怒月神 2019-08-08
  • 打赏
  • 举报
回复
在代码里检查了。 if(token.IsCancellationRequested) { throw new OperationCanceledException(token); }
stherix 2019-08-08
  • 打赏
  • 举报
回复
Task就是这样的啊 除非你在Task等待的地方try catch这样可以捕获取消的异常
m0_37646670 2019-08-07
  • 打赏
  • 举报
回复
引用 1 楼 exception92 的回复:
是的,task的取消机制就是立刻终止任务执行,会抛出System.OperationCanceledException异常,线程回到线程池,等待执行其它操作。
然后我有又发现了TrySetCancel
exception92 2019-08-07
  • 打赏
  • 举报
回复
是的,task的取消机制就是立刻终止任务执行,会抛出System.OperationCanceledException异常,线程回到线程池,等待执行其它操作。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧