C Task任務取消

2022-10-09 19:51:06 字數 843 閱讀 2627

在使用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...