1 回答

TA貢獻1773條經驗 獲得超3個贊
我可以理解這句話似乎建議不要使用ThrowIfCancellationRequested
,但事實并非如此——使用ThrowIfCancellationRequested
是合適的。
有幾個來源表明使用ThrowIfCancellationRequested
是合適的:
ThrowIfCancellationRequested
表明這是正確的方法。
拋出
OperationCanceledException
是 TPL 中表達“您調用的方法被取消”的慣用方式。不要反對它——只是期待它。
Microsoft 的此消息?表明這ThrowIfCancellationRequested
是正確的方法。
成功取消涉及請求代碼調用 CancellationTokenSource.Cancel 方法,以及用戶委托及時終止操作。您可以使用以下選項之一終止操作:
只需從委托返回即可[剪掉該項目符號的其余部分]
通過拋出 OperationCanceledException 并向其傳遞請求取消的令牌。執行此操作的首選方法是使用 ThrowIfCancellationRequested 方法。以這種方式取消的任務將轉換為已取消狀態,調用代碼可以使用該狀態來驗證任務是否響應了其取消請求
還有一個代碼示例演示如何ThrowIfCancellationRequested
正確使用。
進一步閱讀此 Microsoft 源代碼的另一句話:
當任務實例觀察到用戶代碼引發的 OperationCanceledException 時...任務會將其解釋為確認取消并轉換到“已取消”狀態。
...
另請注意,其他異常的存在也會導致任務轉換到Faulted狀態......
我懷疑(這只是我試圖協調兩個來源)這就是您引用的建議所指的內容——這是一個避免破壞取消機制準確指示任務狀態為已取消或故障的能力的建議
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報