我正在做一些異步操作,我想使用CancellationToken停止運行異步任務,例如用戶請求此示例。爲了做到這一點,是否有一個良好的做法,有一個字典,我可以找到正確的線程,以停止正確的操作?目前有什麼我看是這樣的:取消令牌源示例
public Dictionary<Thread, CancellationToken> CancellationTokenData;
因此,如果用戶上也應做正確,如果我沒看錯的操作請求取消?
這樣做的最佳做法是什麼?
例如,假設用戶使用線程{B}在數據庫內的集合{A}上執行一些非常長的操作。然後他取消該操作並對另一個線程的集合{A}使用另一個冗長的操作。我應該爲當前的CancellationToken
使用全局變量嗎?
我不能說我明白你在問什麼,但取消很簡單,絕對沒有理由跟蹤線程。您創建CancellationTokenSource並將其令牌傳遞給任何冗長的操作,即接受取消令牌的任何方法。客戶端調用'source'來中止,源代表令牌,監視它的任何*操作*優雅地終止。這是終止的操作/方法,而不是線程。沒有「當前」令牌,你可以將相同的令牌傳遞給多個操作 – 2015-02-11 16:04:39
@PanagiotisKanavos好吧,但是你使用局部變量來做到這一點嗎?如果我使用本地變量,我會受到太大限制,我只能稱它爲在當前方法裏面,如果我用它作爲全局變量,事情會變得凌亂嗎?我應該每個人都有一個全球?我希望我們在同一條軌道上。 – Hristo 2015-02-11 16:07:13
我是否理解你的線程之間存在依賴關係?那麼當然你必須爲它們使用相同的令牌 - 並且使用字典毫無意義...... – 2015-02-11 16:10:15