第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

通過在 Register 回調(diào)中調(diào)用 ThrowIfCancellationRequested

通過在 Register 回調(diào)中調(diào)用 ThrowIfCancellationRequested

C#
蝴蝶刀刀 2023-09-24 10:53:25
我正在嘗試遷移到使用 .NET 中的 CancellationToken/Src 構(gòu)造,例如:https: //learn.microsoft.com/en-us/dotnet/standard/threading/cancellation-in-management-threads我的基本問題是關(guān)于對(duì)取消請(qǐng)求做出反應(yīng)。就我而言,我有一些長(zhǎng)時(shí)間運(yùn)行的處理,這對(duì)于一致性并不重要。當(dāng)取消請(qǐng)求到達(dá)時(shí),我無法承受“輪詢”的模式,例如:        while (!_token.IsCancellationRequested)        {            DoProcessing(...)        }因?yàn)樘幚磉^程可能需要幾分鐘,而我真的想立即退出。我的問題是,正確的方法是否是簡(jiǎn)單地使用此設(shè)置:    public void Start()    {        _token.Register(() => _token.ThrowIfCancellationRequested());        // Continuously process stuff.        while (!_token.IsCancellationRequested)        {            DoProcessing(...)        }    }也就是說,注冊(cè)一個(gè)回調(diào),該回調(diào)只會(huì)拋出 OperationCanceledException。我可以在這里閱讀:https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtokensource.cancel?view=netframework-4.8,即:我們建議使用 CancellationToken 注冊(cè)的可取消操作和回調(diào)不要拋出異常。然而...立即中斷我的處理(而不是輪詢)并仍然遵守框架規(guī)定的“規(guī)則”的正確方法是什么?
查看完整描述

1 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

我可以理解這句話似乎建議不要使用ThrowIfCancellationRequested,但事實(shí)并非如此——使用ThrowIfCancellationRequested是合適的。

有幾個(gè)來源表明使用ThrowIfCancellationRequested是合適的:

ThrowIfCancellationRequested表明這是正確的方法。

拋出OperationCanceledException是 TPL 中表達(dá)“您調(diào)用的方法被取消”的慣用方式。不要反對(duì)它——只是期待它。

Microsoft 的此消息?表明這ThrowIfCancellationRequested是正確的方法。

成功取消涉及請(qǐng)求代碼調(diào)用 CancellationTokenSource.Cancel 方法,以及用戶委托及時(shí)終止操作。您可以使用以下選項(xiàng)之一終止操作:

  • 只需從委托返回即可[剪掉該項(xiàng)目符號(hào)的其余部分]

  • 通過拋出 OperationCanceledException 并向其傳遞請(qǐng)求取消的令牌。執(zhí)行此操作的首選方法是使用 ThrowIfCancellationRequested 方法。以這種方式取消的任務(wù)將轉(zhuǎn)換為已取消狀態(tài),調(diào)用代碼可以使用該狀態(tài)來驗(yàn)證任務(wù)是否響應(yīng)了其取消請(qǐng)求

還有一個(gè)代碼示例演示如何ThrowIfCancellationRequested正確使用。

進(jìn)一步閱讀此 Microsoft 源代碼的另一句話:

當(dāng)任務(wù)實(shí)例觀察到用戶代碼引發(fā)的 OperationCanceledException 時(shí)...任務(wù)會(huì)將其解釋為確認(rèn)取消并轉(zhuǎn)換到“已取消”狀態(tài)。

...

另請(qǐng)注意,其他異常的存在也會(huì)導(dǎo)致任務(wù)轉(zhuǎn)換到Faulted狀態(tài)......

  • 我懷疑(這只是我試圖協(xié)調(diào)兩個(gè)來源)這就是您引用的建議所指的內(nèi)容——這是一個(gè)避免破壞取消機(jī)制準(zhǔn)確指示任務(wù)狀態(tài)為已取消或故障的能力的建議


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)