在使用blazor開發工具時,有個需求:
掃碼登入頁面需要不斷輪詢介面獲取掃碼狀態,並在對應的狀態下進行對應的操作:重新整理、登入、跳轉等;
此時,為了不阻塞前端的響應,需要我們開啟乙個執行緒進行狀態檢測,並在完成後結束執行緒任務;
使用取消令牌(cancellationtokensource);
相對操作比較簡單,需要結束時呼叫cancel(),同時,在task內部進行iscancellationrequested狀態監聽、或者使用暴力呼叫throwifcancellationrequested()(同樣需要不間斷的呼叫,cancel後才可觸發,本質上也是校驗iscancellationrequested狀態);
var cts = new cancellationtokensource();
var tk = cts.token;
// 將cancellationtoken傳入action中,然後對其取消狀態進行跟蹤
_ = task.factory.startnew(async tk =>
}, tk, taskcreationoptions.longrunning);
// or
// 此處是對於取消註冊個**方法,在取消後進行呼叫
_ = task.factory.startnew(async tk =>
); while (state)
}, tk, taskcreationoptions.longrunning);
cancellationtokensource 具體實現原始碼解析:**c#取消令牌cancellationtokensource
相關專案:wecomload demo
C Task 暫停與取消
2016年12月12日 10 03 52 white hacker 閱讀數 11241 標籤 c task 執行緒多執行緒更多 個人分類 c task 多執行緒本篇的內容也很重要,因為涉及到了日常經常會碰到的取消任務操作。從我個人了解到的情況,基本上大家都採用cancellationtokensou...
C Task 暫停與取消
1.宣告引數 1 cancellationtokensource tokensource new cancellationtokensource 2 cancellationtoken token tokensource.token 3 manualresetevent resetevent new...
C Task 任務計畫
using system using system.threading using system.collections.generic namespace rocky get 執行任務的計畫 public ischedule shedule 該任務最後一次執行的時間 public datetime...