当前位置:首页 > 以太坊价格 > 『技术群里聊些啥』Task 不是你想 Cancel,想 Cancel 就能 Cancel

『技术群里聊些啥』Task 不是你想 Cancel,想 Cancel 就能 Cancel

贵州小哥3年前 (2022-07-18)以太坊价格110

前言

在群里看到有人问如何取消这个 Task 的执行:

实际上这并不会取消 S1eepMode1 方法的执行:

这是为什么呢imtoken?

原因

首先imtoken,让我们看看 s_cts.Cancel 都做了啥:

public void Cancel => Cancel( false);

public void Cancel(bool throwOnFirstException)

展开全文

ThrowIfDisposed;

NotifyCancellation(throwOnFirstException);

private void NotifyCancellation(bool throwOnFirstException)

// If we 're the first to signal cancellation, do the main extra work.

if (!IsCancellationRequested

&& Interlocked.CompareExchange(ref _state, NotifyingState, NotCanceledState) == NotCanceledState)

实际上, Cancel 方法仅仅是将变量 _state 的值改为 NotifyingState imtoken。

那 Task.Run 传递 s_cts.Token 又有什么用呢imtoken?

public static Task<TResult> Run<TResult>(Func<Task<TResult>?> function, CancellationToken cancellationToken)

if( function== null) ThrowHelper.ThrowArgumentNullException(ExceptionArgument.function);

// Short-circuit ifwe are given a pre-canceled token

if(cancellationToken.IsCancellationRequested)

returnTask.FromCanceled<TResult>(cancellationToken);

原来, 是在创建 Task 前先检查令牌是否已经 Cancel ,以便快速终止imtoken。

那么imtoken,到底怎么才能 Cacel 已创建的 Task 呢?

实现

其实imtoken, Task.Run 的方法实现已经告诉我们正确的解决方案,那就是判断 cancellationToken.IsCancellationRequested :

public static async Task S1eepMode1(CancellationToken cancellationToken)

while( true)

if(cancellationToken.IsCancellationRequested)

return;

另外imtoken,也可以采取抛出异常的方式:

public static async Task S1eepMode1(CancellationToken cancellationToken)

while( true)

cancellationToken.ThrowIfCancellationRequested;

示例应用程序并不会捕获到这个异常imtoken,相关问题可以看我以前的文章《 如何保证执行异步方法时不会遗漏 await 关键字 》

结论

在创建 Task 时请记住,即使你执行了令牌取消操作,也并不意味着 Task 会停止运行imtoken。

添加微信号【MyIO666】imtoken,邀你加入技术交流群

扫描二维码推送至手机访问。

版权声明:本文由贵州小哥发布,如需转载请注明出处。

本文链接:https://xiaogecar.com/coin/857.html

分享给朋友:

“『技术群里聊些啥』Task 不是你想 Cancel,想 Cancel 就能 Cancel” 的相关文章

TRtoken:《最终幻想7 : 重制版》登陆Steam

TRtoken:《最终幻想7 : 重制版》登陆Steam

TRtoken报道,TRtoken指出Square Enix在《FINAL FANTASY VII 25th Anniversary Celebration》活动上宣布,《最终幻想7:重制版 Intergrade(Final Fantasy VII Remake Intergrade)》今天将登陆S...

德奥通航股票即将摘牌 不服退市决定状告交易所

德奥通航股票即将摘牌 不服退市决定状告交易所

每经记者:陈鹏丽 每经编辑:杨夏 德奥退(SZ002260,股价0.53元,市值3.0亿元)难逃被终止上市的命运交易所。6月15日晚,德奥退(原德奥通航)的股东接到了公司股票确认被终止上市的消息。6月16日交易日结束后,公司股票将会被摘牌。 德奥退15日晚公告称,公司于6月15日收到深交所《股票终止...

风水知识:钱包招财最灵的方法

风水知识:钱包招财最灵的方法

心靠岸情感咨询:随着现在智能手机的普及,已经很少有人会使用钱包了,但一些年纪大的人还是会使用钱包,并且从风水而言,钱包也是具有招财作用的冷钱包。那么下面就来看看钱包招财最灵的方法。 钱包招财最灵的方法 1、钱养包 不管是穷人还是富人,他们的钱包从来不能缺钱,不管多或少,都要放一些在钱包里养着,因为这...

dotnet 6 使用 HttpClient 的超时机制

dotnet 6 使用 HttpClient 的超时机制

在 dotnet 6 里,推荐的网络通讯是使用 的超时机制 在 秒内如果文件还没上传完成,也就是网络活动还没完成,将会触发超时异常 这是比较非预期的逻辑,大部分情况下,在国内的弱网环境下,可能在上传过程中,网络几乎被断开,网络几乎被断开等同于上传速度非常慢imtoken。整个文件上传过程可以分为...

菲律宾央行将于四季度试点数字货币

菲律宾央行将于四季度试点数字货币

菲律宾央行将于四季度试点数字货币 据《菲律宾星报》(Philstar)5月3日报道,菲央行行长在接受采访时表示,央行正与几家银行和金融机构就四季度中央银行数字货币(CBDC)试点试验进行谈判数字货币。CBDC为菲纸币的等价物,并同样受到政府担保,为国家货币的数字形式。与面向公众的一般用途或零售CB...

Banting科学成就奖来了!关于KATP通道、葡萄糖激酶,听获奖者讲胰岛素分泌的代谢调节 | ADA2022

Banting科学成就奖来了!关于KATP通道、葡萄糖激酶,听获奖者讲胰岛素分泌的代谢调节 | ADA2022

6月5日上午,备受瞩目的2022年美国糖尿病协会(ADA)年会重磅奖项——Banting科学成就奖颁布,授予英国牛津大学Frances M. Ashcroft博士,以表彰其对糖尿病的理解、治疗或预防做出的重大长期贡献ada。 Frances Ashcroft博士是牛津大学生理学教授、牛津大学三一学院...