簡體   English   中英

取消令牌源示例

[英]Cancellation Token source example

我正在做一些異步操作,我想使用CancellationToken來阻止異步任務運行,如果用戶例如請求它。 為了做到這一點,最好有一個Dictionary,我可以找到正確的Thread來停止正確的操作? 我目前正在關注的是:

    public Dictionary<Thread, CancellationToken> CancellationTokenData;

因此,如果用戶請求取消操作,如果我沒錯,它應該表現正常嗎?

這樣做的最佳做法是什么?

例如,假設用戶使用線程{B}在數據庫內的集合{A}上執行一些非常長的操作。 然后他取消操作並繼續使用來自另一個線程的集合{A}的另一個冗長的操作。 我應該為當前的CancellationToken使用全局變量嗎?

通常,每個可取消的操作都有一個CancellationTokenSource 您將CancellationTokenSource傳遞給可能需要取消操作的所有人( cts.Cancel() ),並將CancellationTokencts.Token )傳遞給需要知道取消的每個人。

在這個抽象級別,你不會停止線程; 你停止了操作。 線程僅僅是實現細節。

因此,我不認為將令牌映射到線程是個好主意。 如果涉及任務,這是一個非常糟糕的主意,因為無法保證每個任務實際上都在新線程上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM