你的位置:首页 > 软件开发 > ASP.net > .Net 异步方法加上“timeout”

.Net 异步方法加上“timeout”

发布时间:2016-06-01 17:00:10
在本羊读大学的时候,Thread让本羊云里雾里,代码写的痛不欲生,真的是让本羊脑袋里很多“线”缠绕在一起。之后,Task让本羊代码写的飞起,甚至有时候根本不需要Task的时候还是要写上,那样显得档次较高:多线程!充分利用CPU!niubil ...

在本羊读大学的时候,Thread让本羊云里雾里,代码写的痛不欲生,真的是让本羊脑袋里很多“线”缠绕在一起。

之后,Task让本羊代码写的飞起,甚至有时候根本不需要Task的时候还是要写上,那样显得档次较高:多get='_blank'>线程!充分利用CPU!niubility!

再之后,async/await语法糖横空出世,更让本羊欲罢不能!

 

然而,

好东西吃多了总会腻的——吃货

常在河边走,哪有不湿鞋?——文艺青年

出来混总是要还的——“四道杠”骚年

飙车一时爽,“全家”火葬场——老司机

 

扯远了,反正大概意思就是,async/await 也会有不爽的时候。

比如:UdpClient.ReceiveAsync()

 

某领导:只等待5秒,过时不候。这样比较节约性能。

——哎哟,很有道理的样子,那就改改?

 

于是,本羊很快就找到了一个属性:UdpClient.Client.ReceiveTimeout

 

UdpClient.Client.ReceiveTimeout=5000;//领导说了只等5秒 <--注释在这里

var r=UdpClient.ReceiveAsync();

……(省略其他代码)

 

看到没,本羊还很善意的给代码加上了“注释”,方便其他小伙伴理解本羊的优雅的高深的简洁的代码。

然后拿起水杯,小小的抿了一口,伸出右手食指,轻轻的按下“F5”,左手在桌子上很有节奏的敲了5下,哎哟,啥情况?

再敲5下,再敲5下,再敲5下……

好吧,本羊输了。

是时候打开MSDN了,原来,ReceiveTimeout这玩意儿只对同步方法有效,ReceiveAsync根本不管这Y的。

 

再研究研究?

 

经过一番刻苦钻研,新的代码来了:

var t=new CancellationTokenSource();//这玩意儿就是用来配合Task,做取消功能的

Task.Delay(5000, t.Token).ContinueWith(task =>

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:.Net 异步方法加上“timeout”

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。