首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >支持取消的Task.Run

支持取消的Task.Run
EN

Stack Overflow用户
提问于 2015-02-17 00:21:29
回答 1查看 1.3K关注 0票数 4

考虑一下 example。它展示了如何创建具有取消支持的任务。

我也在做类似的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Task.Run(()=>{while (!token.IsCancellationRequested()) {...}}, token);

我的问题:

  1. 既然我已经引用了取消令牌,那么为什么要将它作为参数传递给Task.Run调用呢?
  2. 我经常在示例中看到以下代码: if (token.IsCancellationRequested) token.ThrowIfCancellationRequested();

这段代码的目的是什么?为什么不只是return的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-17 00:32:27

  1. 如果您将取消令牌传递给Task.Run,如果令牌在任务启动前被取消,它将永远不会启动,从而节省资源(我的意思是不创建线程等)。
  2. 如果您只是从方法返回,任务的状态将不是Canceled,而是RanToCompletion。很明显这不是你所期望的。

或者,您可以抛出以OperationCanceledException为参数的CancellationToken,这将使Task.Status成为Canceled,但这是一种艰难而冗长的方式。token.ThrowIfCancellationRequested是简洁的。

您可以简单地使用token.ThrowIfCancellationRequested();,不需要检查token.IsCancellationRequestedThrowIfCancellationRequested方法已经这样做了。

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

https://stackoverflow.com/questions/28557506

复制
相关文章
让 WPF 的 RadioButton 支持再次点击取消选中的功能
众所周知,RadioButton 是一种单选框,一般是放置好几个在同一面板中以组成一组;使用时,初始时可能一个都没被选中,或者是设置了一个默认选中项;然后,用户可以在这一组单选框中切换选择其中一个,不能多选,也不能取消选中(也就是不能重新回到一个都没选的状态)。
独立观察员
2022/12/06
2.2K0
让 WPF 的 RadioButton 支持再次点击取消选中的功能
C# Task.Run调用外部参数
然后开始我们的实例:即通过for循环开启十个task,并分别在task任务中输出1~10.
zls365
2020/10/10
4.5K0
C# Task.Run调用外部参数
如何取消网站备案 取消网站备案的流程
当网站经营了一段时间以后,网站的经营者不想使用网站,想要将网站关停,而网站关停后需要取消网站备案,以此避免后续的相关问题。然而大多数的站主在关闭网站后,并不知道如何取消网站备案?那么接下来就给大家介绍一下网站关停后如何取消备案的方法。
用户8715145
2021/10/08
29.4K0
11月29日 云头条:Chrome 与 Firefox 将取消对 FTP 的支持
据 BleepingComputer 报导,Chrome 与 Firefox 将取消对 FTP 的支持。在即将到来的版本中,有一个关于如何在 Chrome 上加载图片的变化似乎预示着 Google 朝着完全抛弃 FTP 的方向迈出了一步。而 Firefox 方面,在 Bugzilla 上一个关于支持 FTP over SSL 的 issue 上,Firefox 开发者指出:“因为我们迟早要完全弃用 FTP,所以不应该在代码库中添加更多相关的代码。”
February
2018/11/29
7420
协程中的取消和异常 | 取消操作详解
在日常的开发中,我们都知道应该避免不必要的任务处理来节省设备的内存空间和电量的使用——这一原则在协程中同样适用。您需要控制好协程的生命周期,在不需要使用的时候将它取消,这也是结构化并发所倡导的,继续阅读本文来了解有关协程取消的来龙去脉。
Android 开发者
2022/09/23
2.1K0
协程中的取消和异常 | 取消操作详解
.NET - Task.Run vs Task.Factory.StartNew
在 .NET 4 中,Task.Factory.StartNew 是安排新任务的首选方法。它有许多重载提供了高度可配置的机制,通过启用设置选项,可以传递任意状态、启用取消,甚至控制调度行为。所有这些功能的另一面是复杂性。您需要知道什么时候使用哪个重载、提供什么调度程序等等。另外,Task.Factory.StartNew 用起来并不直截干脆,至少对于它的一些使用场景来说还不够快,比如它的主要使用场景——轻松地将工作交付到后台处理线程。
独立观察员
2022/12/06
4280
C# Task.Run 和 Task.Factory.StartNew 区别
Task.Run 是在 dotnet framework 4.5 之后才可以使用,但是 Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制。可以认为 Task.Run 是简化的 Task.Factory.StartNew 的使用,除了需要指定一个线程是长时间占用的,否则就使用 Task.Run。
zls365
2021/01/13
1.3K0
vim/vi 怎么取消高亮 或 取消选中状态
在Vi里面如果要搜索某个关键字,只要在命令状态下键入/xxx就可以了,比如,我要搜索port的位置,我就键入: /port 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键,就可以自动把光标跳到下一个。如下图所示:
黑泽君
2018/12/06
8.8K1
Task.Run 和 Task.Factory.StartNew 区别——c#
Task.Run 是在 dotnet framework 4.5 之后才可以使用, Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制。
vv彭
2021/01/06
1.4K0
【C# 基础精讲】Task和Task<T>的应用
当涉及异步编程时,Task 和 Task<T> 是C#中的重要概念。它们不仅是处理异步操作的关键类型,还提供了一些强大的功能和方法,使异步编程更加高效和灵活。在本文中,我们将深入探讨 Task 和 Task<T> 的应用,从创建、执行、等待到取消和异常处理等方面进行详细讨论,帮助您更好地理解如何在C#中应用这些类型。
繁依Fanyi
2023/10/12
7370
【C# 基础精讲】Task和Task<T>的应用
axios取消请求
在使用Axios发送请求时,有时可能需要取消请求,特别是在用户需要中断请求或离开当前页面时。Axios提供了取消请求的功能,以便有效地管理和处理请求的取消操作。
堕落飞鸟
2023/05/19
2.5K0
C#多线程(13):任务基础①
.NET 中,有三种异步编程模式,分别是基于任务的异步模式(TAP)、基于事件的异步模式(EAP)、异步编程模式(APM)。
痴者工良
2021/04/26
9440
2019-1-24-Task真的取消了么
我们都知道Task.Run方法可以传入一个CancellationToken,用于取消。可是有多少人真的去了解过当调用CancellationSource.Cancel方法时,Task是否真的被取消了
黄腾霄
2020/06/10
5810
iOS - Swift UISearchController的取消按钮
UISearchController�的取消按钮 关于UISearchController�的设置就不多说了,可以参考《UISearchController�仿微信搜索框》或者自行上网查找。 情况 本人想实现微信通讯录上方的搜索框功能,但在搜索框的取消按钮的设置这个卡住,在网上搜了个遍,没有�合适的做法,经过不懈的探索,终于找到解决方案,遂前来记录一下。 方案 添加两个属性 // 记录是否已经找到取消按钮 lazy var hasFindCancelBtn: Bool = { return fa
LinXunFeng
2018/06/29
9070
AJAX取消请求
在进行 AJAX(Asynchronous JavaScript and XML)请求时,有时候我们需要取消正在进行的请求。取消请求可以帮助我们提高用户体验,并减少不必要的网络流量和服务器负载。
堕落飞鸟
2023/05/19
1.9K0
axios 取消请求
官方文档:http://www.axios-js.com/zh-cn/docs/#%E5%8F%96%E6%B6%88
小鑫
2022/04/24
1.6K0
取消延时功能[通俗易懂]
大家好,又见面了,我是全栈君。 - (void) networkReachabilityDidUpdate:(NetworkReachability*)reachability { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reachabilityChanged) object:nil]; [self performSelector:@selector(reachabi
全栈程序员站长
2022/01/18
3.3K0
取消css事件
auto 与pointer-events属性未指定时的表现效果相同,对于SVG内容,该值与visiblePainted效果相同 none (一般会用到它,其他属性值很小使用) 元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器。 visiblePainted 只适用于SVG。元素只有在以下情况才会成为鼠标事件的目标: visibility属性值为visible,且鼠标指针在元素内部,且fill属性指定了none之外的值 visibility属性值为visible,鼠标指针在元素边界上,且stroke属性指定了none之外的值 visibleFill 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素内部时,元素才会成为鼠标事件的目标,fill属性的值不影响事件处理。 visibleStroke 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素边界时,元素才会成为鼠标事件的目标,stroke属性的值不影响事件处理。 visible 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素内部或边界时,元素才会成为鼠标事件的目标,fill和stroke属性的值不影响事件处理。 painted 只适用于SVG。元素只有在以下情况才会成为鼠标事件的目标: 鼠标指针在元素内部,且fill属性指定了none之外的值 鼠标指针在元素边界上,且stroke属性指定了none之外的值 visibility属性的值不影响事件处理。 fill 只适用于SVG。只有鼠标指针在元素内部时,元素才会成为鼠标事件的目标,fill和visibility属性的值不影响事件处理。 stroke 只适用于SVG。只有鼠标指针在元素边界上时,元素才会成为鼠标事件的目标,stroke和visibility属性的值不影响事件处理。 all 只适用于SVG。只有鼠标指针在元素内部或边界时,元素才会成为鼠标事件的目标,fill、stroke和visibility属性的值不影响事件处理。 示例
用户6379025
2022/12/26
1.5K0
点击加载更多

相似问题

Task.Run取消

10

取消Task.Run作业

12

如何正确取消内部死锁的Task.Run

119

取消Task.Run时未捕获异常

35

支持取消的GetContextAsync()

39
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文