UWP C#如何实现async task的超时取消

 时间:2024-11-12 17:27:25

1、首先,如图代码是UWP开发中常见的网络请求发送代码。但是,await可能要等很久还等不到结果。

UWP C#如何实现async task的超时取消

2、微软开发者文档中给出的写法如图所示,首席那创建cts,然后设定cts指定时间后发送取消请求,接着在调用异步请求的时候传入cts.Token。这样是没问题的,但是到了时间就取消了,没法让用户选择是否继续。

UWP C#如何实现async task的超时取消

3、如果希望等待到指定时间后,可以选择继续等待还是取消,就要手动控制cts的Cancel请求。为此,我们不能直接await异步任务,而是先用AsTask得到Task。如图是得到task之后,Delay等待一段时间,图中还没有补全500毫秒后请求没完成的处理逻辑。但是,这么做可能会做无谓的等待。

UWP C#如何实现async task的超时取消

4、这样做虽然能work,但是会造成不管异步任务有没有提前完成都要等固定时间。

UWP C#如何实现async task的超时取消

5、为了减少等待时间的浪费,完整的逻辑如图所示,通过循环每次等待50毫秒的方式来减少等待时间。如图实现了等待4秒时文字提示,等待10秒时要用户选择是否继续。

UWP C#如何实现async task的超时取消

6、最终效果如图所示。由于每50毫秒查看一次状态,查看CPU未见占用率有变化,而且没有察觉出程序变慢。

UWP C#如何实现async task的超时取消
  • Windows 2008中证书的申请与频发
  • 解决Eclipse中build path和compiler的jre不匹配
  • 怎么把前端代码提交到git
  • linux网络命令之htop
  • linux如何添加用户
  • 热门搜索
    法制小报手抄报 科技幻想手抄报 有关卫生的手抄报 法律手抄报图片大全 食品安全手抄报花边 手抄报的花边怎么画 关于感恩的心手抄报 水是生命之源手抄报 人鸦手抄报 儿童手抄报春节