在ASP.NET中,處理異步任務取消通常涉及到使用CancellationToken
來控制任務的取消。以下是一個簡單的示例,展示了如何在ASP.NET中使用異步任務取消:
CancellationToken
參數:public async Task PerformAsyncTask(CancellationToken cancellationToken)
{
for (int i = 0; i < 10; i++)
{
// 檢查是否已取消
cancellationToken.ThrowIfCancellationRequested();
// 模擬執行異步任務
await Task.Delay(1000);
// 在這里執行您的實際任務邏輯
}
}
CancellationToken
實例:public class MyController : Controller
{
public async Task<IActionResult> StartAsyncTask()
{
// 創建一個CancellationToken實例
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
// 開始異步任務
await PerformAsyncTask(cancellationTokenSource.Token);
// 如果任務被取消,返回一個錯誤響應
if (cancellationTokenSource.Token.IsCancellationRequested)
{
return StatusCode(400, "異步任務被取消");
}
// 如果任務未完成,返回一個成功響應
return Ok("異步任務完成");
}
}
fetch
API發送一個請求,其中包含一個取消令牌:async function cancelAsyncTask() {
const response = await fetch('/MyController/StartAsyncTask', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ cancellationToken: 'your-cancellation-token-here' })
});
const result = await response.json();
console.log(result);
}
在這個示例中,當客戶端調用cancelAsyncTask
函數時,它將向服務器發送一個請求,其中包含一個取消令牌。服務器端的StartAsyncTask
方法將檢查該令牌,并在任務被取消時返回一個錯誤響應。