優雅地處理winrt
中的異步任務 Windows 8 Winrt的異步任務管理,雖然強大,但在取消任務時會遇到挑戰。 一個常見的問題是>方法啟動,但任務繼續執行,將任務狀態錯誤地標記為“已完成”而不是“取消”。
CancelNotification
CancellationToken
解決此問題的關鍵在於正確實施
CancellationToken
CancellationToken
修訂的代碼示例:
此改進的代碼段演示了>的正確使用:>
此修訂後的方法包含了ACancellationToken
在其循環中檢查。 如果請求取消,則會拋棄一個
<code class="language-csharp">private async Task TryTask() { CancellationTokenSource source = new CancellationTokenSource(); source.CancelAfter(TimeSpan.FromSeconds(1)); Task<int> task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token); try { // A canceled task will throw an exception when awaited. await task; } catch (OperationCanceledException) { // Handle cancellation gracefully. } } private int slowFunc(int a, int b, CancellationToken cancellationToken) { for (int i = 0; i < 1000000; i++) { cancellationToken.ThrowIfCancellationRequested(); // Check for cancellation // ... your long-running operation ... } return a + b; }</code>方法包括一個
塊來處理此異常。 slowFunc
cancellationToken.ThrowIfCancellationRequested()
>結果:OperationCanceledException
TryTask
>
try-catch
這種方法可確保取消任務完全停止,提供準確的任務狀態報告並防止意外的背景執行。 適當的例外處理進一步增強了魯棒性。
以上是如何在Windows 8 Winrt中正確取消異步任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!