c# – 具有取消支持的Task.Run
发布时间:2020-12-15 23:22:33 所属栏目:百科 来源:网络整理
导读:考虑 this Task.Run example.它显示了如何创建具有取消支持的任务. 我正在做类似的事情: Task.Run(()={while (!token.IsCancellationRequested()) {...}},token); 我的问题: 因为我已经有了对取消令牌的引用,为什么将它作为参数传递给Task.Run调用呢? 我
考虑
this
Task.Run example.它显示了如何创建具有取消支持的任务.
我正在做类似的事情: Task.Run(()=>{while (!token.IsCancellationRequested()) {...}},token); 我的问题: >因为我已经有了对取消令牌的引用,为什么将它作为参数传递给Task.Run调用呢? if(token.IsCancellationRequested)token.ThrowIfCancellationRequested(); 这段代码的目的是什么?为什么不从方法返回? 解决方法
>如果将取消令牌传递给Task.Run,??如果在启动任务之前取消令牌,则永远不会启动它来保存资源(我的意思是不创建线程等).
>如果你只是从方法返回,任务的状态将不会被取消,它将是RanToCompletion.显然,这不是你所期望的. 或者,您可以使用CancellationToken作为参数抛出OperationCanceledException,这将使Task.Status被取消,但这是一种艰难而冗长的方式. token.ThrowIfCancellationRequested简洁明了. 您可以简单地使用token.ThrowIfCancellationRequested();,无需检查token.IsCancellationRequested. ThrowIfCancellationRequested方法已经这样做了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |