本文介绍在UWP的C环境中实现异步任务超时取消的两种方法:一种采用官方推荐方式,另一种提供更精细的控制能力,适用于不同场景需求。
1、 在UWP开发中,图示代码常用于发送网络请求,但使用await时可能长时间无法获得返回结果。
2、 所示,微软开发者文档推荐的写法是:先创建CancellationTokenSource,设置其在指定时间后触发取消,再将cts.Token作为参数传入异步方法中,以支持取消操作。
3、 这样操作可行,但时间一到自动取消,无法让用户自主决定是否延续。
4、 若披菌需在等待指定时间后选择继续或取消,应手动控制cts的Cancel请求操作。
5、 因此,我们需先调用AsTask获取Task对象,而非直接等待异步任务。
6、 所示,在获取任务后进行延时等待,尚未补充500毫秒内请求未完成的处理逻辑。然而,这种做法可能导致不必要的等待,影响效率。
7、 这样做虽可行,但无论异步任务是否提前完成,都需等待固定时长。
8、 为缩短等待时间,采用循环机制,每次间隔50毫秒进行检测,有效提升效率,减少资源浪费。
9、 等待4秒显示提示文字,10秒后弹出选择框询问是否继续操作。
10、 最终效果所示。每隔50毫秒检测一次状态,CPU占用率未见波动,程序运行流畅,无明显卡顿。
11、 在UWP开发中,图示代码常用于发送网络请求,但使用await时可能长时间无法返回结果,导致程序阻塞,影响用户体验。
