2016 - 2024

感恩一路有你

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

浏览量:4399 时间:2024-05-23 22:26:57 作者:采采

本文将介绍在UWP C中实现async task的超时取消的方法,包括官方写法和更多控制的写法。首先,我们常见的网络请求发送代码如下:

```csharp

// 网络请求发送代码示例

```

然而,使用await可能会导致长时间等待无法获取结果。微软开发者文档提供了一种解决方案,即创建cts并设置超时时间后发送取消请求,再在调用异步任务时传入。这种方法能够在超时后自动取消任务,但用户无法选择是否继续等待。

若希望用户能够选择继续等待或取消任务,在此之前需要手动控制cts的Cancel请求。具体做法是先通过AsTask获取Task,然后使用Delay等待一段时间,并根据需求处理500毫秒后请求未完成的情况。然而,这种方式可能造成无谓的等待。

为了减少等待时间的浪费,可以通过循环每次等待50毫秒的方式来实现更高效的逻辑。完整的实现如下图所示,当等待4秒时提示用户,等待10秒时询问用户是否继续等待。

最终效果显示,由于每50毫秒检查一次状态,程序在等待过程中未观察到明显的CPU占用率变化,也没有感受到程序变慢。

以上是在UWP C中实现async task的超时取消的方法,通过合理的控制和优化,能够有效地管理异步任务的执行时间。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。