如何在UWP C中實現(xiàn)async task的超時取消
本文將介紹在UWP C中實現(xiàn)async task的超時取消的方法,包括官方寫法和更多控制的寫法。首先,我們常見的網(wǎng)絡(luò)請求發(fā)送代碼如下:```csharp// 網(wǎng)絡(luò)請求發(fā)送代碼示例```然而,使用awa
本文將介紹在UWP C中實現(xiàn)async task的超時取消的方法,包括官方寫法和更多控制的寫法。首先,我們常見的網(wǎng)絡(luò)請求發(fā)送代碼如下:
```csharp
// 網(wǎng)絡(luò)請求發(fā)送代碼示例
```
然而,使用await可能會導(dǎo)致長時間等待無法獲取結(jié)果。微軟開發(fā)者文檔提供了一種解決方案,即創(chuàng)建cts并設(shè)置超時時間后發(fā)送取消請求,再在調(diào)用異步任務(wù)時傳入。這種方法能夠在超時后自動取消任務(wù),但用戶無法選擇是否繼續(xù)等待。
若希望用戶能夠選擇繼續(xù)等待或取消任務(wù),在此之前需要手動控制cts的Cancel請求。具體做法是先通過AsTask獲取Task,然后使用Delay等待一段時間,并根據(jù)需求處理500毫秒后請求未完成的情況。然而,這種方式可能造成無謂的等待。
為了減少等待時間的浪費,可以通過循環(huán)每次等待50毫秒的方式來實現(xiàn)更高效的邏輯。完整的實現(xiàn)如下圖所示,當(dāng)?shù)却?秒時提示用戶,等待10秒時詢問用戶是否繼續(xù)等待。
最終效果顯示,由于每50毫秒檢查一次狀態(tài),程序在等待過程中未觀察到明顯的CPU占用率變化,也沒有感受到程序變慢。
以上是在UWP C中實現(xiàn)async task的超時取消的方法,通過合理的控制和優(yōu)化,能夠有效地管理異步任務(wù)的執(zhí)行時間。